MachineIntelligenceCore:Toolchain
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
Logger.hpp
Go to the documentation of this file.
1 
23 #ifndef SRC_CONFIGURATION_LOGGER_HPP_
24 #define SRC_CONFIGURATION_LOGGER_HPP_
25 
26 #include <boost/atomic.hpp>
27 #include <boost/thread/mutex.hpp>
28 #include <boost/ptr_container/ptr_vector.hpp>
29 
30 
31 #include <logger/LoggerOutput.hpp>
32 
33 
34 namespace mic {
35 
41 namespace logger {
42 
47 class Logger {
48 public:
53  static Logger* getInstance();
54 
58  void log(const std::string & file, int line, Severity_t sev, const std::string & msg);
59 
63  void addOutput(LoggerOutput * out);
64 
69 
74 
75 
79  void setSeverityLevel(Severity_t sev);
80 
81 
82 private:
86  static boost::atomic<Logger*> instance_;
87 
91  static boost::mutex instantiation_mutex;
92 
96  Logger();
97 
101  boost::ptr_vector<LoggerOutput> outputs;
102 
103 };
104 
105 
106 } /* namespace logger */
107 } /* namespace mic */
108 
109 #endif /* SRC_CONFIGURATION_LOGGER_HPP_ */
Logger - defined in the form of a singleton, with double-checked locking pattern (DCLP) based access ...
Definition: Logger.hpp:47
Severity_t
Message severity level.
Definition: LoggerAux.hpp:35
static boost::atomic< Logger * > instance_
Definition: Logger.hpp:86
void setSeverityLevel(Severity_t sev)
Definition: Logger.cpp:89
void log(const std::string &file, int line, Severity_t sev, const std::string &msg)
Definition: Logger.cpp:67
void incrementSeverityLevel()
Definition: Logger.cpp:78
Contains definition of an abstract logger output class, from which all output classes should be derri...
Abstract interface for different logger outputs.
static Logger * getInstance()
Definition: Logger.cpp:37
void addOutput(LoggerOutput *out)
Definition: Logger.cpp:62
boost::ptr_vector< LoggerOutput > outputs
Definition: Logger.hpp:101
void decrementSeverityLevel()
Definition: Logger.cpp:83
static boost::mutex instantiation_mutex
Definition: Logger.hpp:91