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
24enum 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.
71typedef void (*logFnc)(int, std::string);
72
73
74class NymphLoggerChannel : public Poco::Channel {
75 logFnc loggerFunction;
76
77public:
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
90 //static Poco::Logger* loggerRef;
91public:
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