NymphRPC Remote Procedure Call Library
nymph_logger.h
1 /*
2  nymph_logger.h - header file for the NymphRPC Logger class.
3 
4  Revision 0
5 
6  Notes:
7  - The central logging client for the Nymph library.
8 
9  2017/06/24, Maya Posch : Initial version.
10  (c) Nyanko.ws
11 */
12 
13 #pragma once
14 #ifndef NYMPH_LOGGER_H
15 #define NYMPH_LOGGER_H
16 
17 #include <Poco/Logger.h>
18 #include <Poco/LogStream.h>
19 #include <Poco/Channel.h>
20 
21 #include <string>
22 
23 
24 enum NymphLogLevels {
25  NYMPH_LOG_LEVEL_FATAL = 1,
26  NYMPH_LOG_LEVEL_CRITICAL,
27  NYMPH_LOG_LEVEL_ERROR,
28  NYMPH_LOG_LEVEL_WARNING,
29  NYMPH_LOG_LEVEL_NOTICE,
30  NYMPH_LOG_LEVEL_INFO,
31  NYMPH_LOG_LEVEL_DEBUG,
32  NYMPH_LOG_LEVEL_TRACE
33 };
34 
35 
36 #define NYMPH_LOG_FATAL(msg) \
37  if (NymphLogger::priority >= Poco::Message::PRIO_FATAL) { \
38  NymphLogger::logger(loggerName).fatal(msg, __FILE__, __LINE__);\
39  }
40 #define NYMPH_LOG_CRITICAL(msg) \
41  if (NymphLogger::priority >= Poco::Message::PRIO_CRITICAL) { \
42  NymphLogger::logger(loggerName).critical(msg, __FILE__, __LINE__);\
43  }
44 #define NYMPH_LOG_ERROR(msg) \
45  if (NymphLogger::priority >= Poco::Message::PRIO_ERROR) { \
46  NymphLogger::logger(loggerName).error(msg, __FILE__, __LINE__);\
47  }
48 #define NYMPH_LOG_WARNING(msg) \
49  if (NymphLogger::priority >= Poco::Message::PRIO_WARNING) { \
50  NymphLogger::logger(loggerName).warning(msg, __FILE__, __LINE__);\
51  }
52 #define NYMPH_LOG_NOTICE(msg) \
53  if (NymphLogger::priority >= Poco::Message::PRIO_NOTICE) { \
54  NymphLogger::logger(loggerName).notice(msg, __FILE__, __LINE__);\
55  }
56 #define NYMPH_LOG_INFORMATION(msg) \
57  if (NymphLogger::priority >= Poco::Message::PRIO_INFORMATION) { \
58  NymphLogger::logger(loggerName).information(msg, __FILE__, __LINE__);\
59  }
60 #define NYMPH_LOG_DEBUG(msg) \
61  if (NymphLogger::priority >= Poco::Message::PRIO_DEBUG) { \
62  NymphLogger::logger(loggerName).debug(msg, __FILE__, __LINE__);\
63  }
64 #define NYMPH_LOG_TRACE(msg) \
65  if (NymphLogger::priority >= Poco::Message::PRIO_TRACE) { \
66  NymphLogger::logger(loggerName).trace(msg, __FILE__, __LINE__);\
67  }
68 
69 
70 // Function pointer typedef for the function-based logger.
71 typedef void (*logFnc)(int, std::string);
72 
73 
74 class NymphLoggerChannel : public Poco::Channel {
75  logFnc loggerFunction;
76 
77 public:
78  NymphLoggerChannel(logFnc function);
80 
81  void close();
82  //string getProperty(const string &name) { return string(); }
83  void log(const Poco::Message &msg);
84  void open();
85  //void setProperty(const string &name, const string &value) { }
86 };
87 
88 
89 class NymphLogger {
90  //static Poco::Logger* loggerRef;
91 public:
92  static Poco::Message::Priority priority;
93 
94  static void setLoggerFunction(logFnc function);
95  static void setLogLevel(Poco::Message::Priority priority);
96  static Poco::Logger& logger();
97  static Poco::Logger& logger(std::string &name);
98  //static void log(string message);
99 };
100 
101 #endif
Definition: nymph_logger.h:74
Definition: nymph_logger.h:89