YAGE  v0.1.4.0
Yet Another Game Engine
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
logger.h
Go to the documentation of this file.
1 
9 #ifndef YAGE_CORE_LOGGER_H
10 #define YAGE_CORE_LOGGER_H
11 
12 #include <memory>
13 #include <string>
14 #include <vector>
15 
16 #include "../util/active.h"
17 #include "loglevel.h"
18 #include "logmessage.h"
19 #include "logsink.h"
20 
21 namespace yage
22 {
23 
24 class Logger
25 {
26 public:
27  Logger();
28  explicit Logger(const std::string &file_path);
29  explicit Logger(LogLevel min_level);
30  Logger(LogLevel min_level, const std::string &file_path);
31 
33  const std::string &fileName = "", int lineNum = -1);
34 
35  void flush(const LogMessage *msg);
36  void add(const LogSink &sink);
37  void remove(const LogSink &sink);
38  void clear();
39 
40  static Logger &instance();
41 
42  // setter for the level
43  void setLevel(LogLevel min_level);
44 
45 private:
46  std::vector<LogSink> sinks_;
47  std::unique_ptr<Active> active_;
48  LogLevel min_level_;
49 };
50 
51 } // namespace yage
52 
53 #define yLogger (yage::Logger::instance())
54 
55 #define yLogDebug \
56  (yage::Logger::instance()(yage::LogLevel::DEBUG, __FILE__, __LINE__))
57 
58 #define yLogInfo \
59  (yage::Logger::instance()(yage::LogLevel::INFO, __FILE__, __LINE__))
60 
61 #define yLogWarning \
62  (yage::Logger::instance()(yage::LogLevel::WARNING, __FILE__, __LINE__))
63 
64 #define yLogError \
65  (yage::Logger::instance()(yage::LogLevel::ERROR, __FILE__, __LINE__))
66 
67 #define yLogFatal \
68  (yage::Logger::instance()(yage::LogLevel::FATAL, __FILE__, __LINE__))
69 
70 #endif
Logger()
Definition: logger.cpp:22
Definition: logmessage.h:23
LogLevel
Different log levels that can be assigned to each message sent to the Logger.
Definition: loglevel.h:20
void setLevel(LogLevel min_level)
Definition: logger.cpp:95
void clear()
Definition: logger.cpp:83
static Logger & instance()
Definition: logger.cpp:88
LogMessage operator()(LogLevel level=LogLevel::INFO, const std::string &fileName="", int lineNum=-1)
Definition: logger.cpp:47
Definition: logger.h:24
void flush(const LogMessage *msg)
Definition: logger.cpp:53
Information message.
void add(const LogSink &sink)
Definition: logger.cpp:69
Definition: logsink.h:23