All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
IssueLogger.h
Go to the documentation of this file.
1 #ifndef GAUDISVC_ISSUELOGGER_H
2 #define GAUDISVC_ISSUELOGGER_H
3 
4 #include "GaudiKernel/Service.h"
5 #include "GaudiKernel/IIssueLogger.h"
6 #include "GaudiKernel/IssueSeverity.h"
7 #include "GaudiKernel/Property.h"
8 #include "StreamLogger.h"
9 #include <string>
10 #include <vector>
11 #include <map>
12 
13 
14 class IssueLogger: public extends1<Service, IIssueLogger> {
15 public:
16  IssueLogger(const std::string& name, ISvcLocator *svc );
17  ~IssueLogger() override = default;
18 
19  StatusCode initialize() override;
20  StatusCode reinitialize() override;
21  StatusCode finalize() override;
22 
23  void report(IssueSeverity::Level level, const std::string& msg,
24  const std::string& origin) override;
25  void report(const IssueSeverity& err) override;
26 
27 private:
28 
33 
34  class logger_t final {
35  std::unique_ptr<StreamLogger> m_logger ;
36  void (StreamLogger::*m_fun)(const std::string&) = nullptr;
37  public:
38  logger_t() = default;
39  logger_t( StreamLogger* logger, void (StreamLogger::*fun)(const std::string&) )
40  : m_logger{ logger }, m_fun{ fun } {}
41  void operator()(const std::string& s) const { (m_logger.get()->*m_fun)(s); }
42  const std::string& name() const { return m_logger->name(); }
43  explicit operator bool () const { return bool(m_logger); }
44  void reset() { m_logger.reset(); }
45  };
46  std::array<logger_t,IssueSeverity::NUM_LEVELS> m_log;
47 
48  StatusCode connect( const std::string& );
49  void setupDefaultLogger();
50  void setupLevels(Property& prop);
51  void setupStreams(Property& prop);
52 
53 };
54 
55 #endif
StatusCode connect(const std::string &)
The ISvcLocator is the interface implemented by the Service Factory in the Application Manager to loc...
Definition: ISvcLocator.h:25
StatusCode finalize() override
~IssueLogger() override=default
StringArrayProperty m_outputfile
Definition: IssueLogger.h:29
GAUDIPS_API Logger & logger()
Return the current logger instance.
IssueSeverity::Level m_reportLevel
Definition: IssueLogger.h:32
std::unique_ptr< StreamLogger > m_logger
Definition: IssueLogger.h:35
StringProperty m_reportLevelS
Definition: IssueLogger.h:30
void operator()(const std::string &s) const
Definition: IssueLogger.h:41
const std::string & name() const
Definition: StreamLogger.h:17
void setupDefaultLogger()
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:26
StatusCode reinitialize() override
std::array< logger_t, IssueSeverity::NUM_LEVELS > m_log
Definition: IssueLogger.h:46
const std::string & name() const
Definition: IssueLogger.h:42
Property base class allowing Property* collections to be "homogeneous".
Definition: Property.h:38
Base class used to extend a class implementing other interfaces.
Definition: extends.h:10
void setupStreams(Property &prop)
void setupLevels(Property &prop)
StatusCode initialize() override
Definition: IssueLogger.cpp:92
double fun(const std::vector< double > &x)
Definition: PFuncTest.cpp:26
logger_t(StreamLogger *logger, void(StreamLogger::*fun)(const std::string &))
Definition: IssueLogger.h:39
string s
Definition: gaudirun.py:245
void(StreamLogger::* m_fun)(const std::string &)
Definition: IssueLogger.h:36
IssueSeverity::Level m_traceLevel
Definition: IssueLogger.h:32
BooleanProperty m_showTime
Definition: IssueLogger.h:31
StringProperty m_traceLevelS
Definition: IssueLogger.h:30
void report(IssueSeverity::Level level, const std::string &msg, const std::string &origin) override
IssueLogger(const std::string &name, ISvcLocator *svc)
Definition: IssueLogger.cpp:72