1 #ifndef _LOGGER_H_INCLUDED_ 2 #define _LOGGER_H_INCLUDED_ 3 /////////////////////////////////////////////////////////////////////////////// 4 // 5 // Logger.h 6 // -------- 7 // Managing log messages 8 // 9 // Design and Implementation by Bjoern Lemke 10 // 11 // (C)opyright 2000-2016 Bjoern Lemke 12 // 13 // INTERFACE MODULE 14 // 15 // Class: Logger 16 // 17 // Description: Managing module notices and debug messages 18 // 19 // Status: CLEAN 20 // 21 /////////////////////////////////////////////////////////////////////////////// 22 23 // INCLUDES 24 #include "Chain.h" 25 #include "File.h" 26 #include "SetT.h" 27 28 class Logger { 29 30 public: 31 32 enum LogLevel { NONE, LOGALERT, LOGERR, NOTICE, DEBUG }; 33 34 Logger(); 35 Logger(const Chain& logFile, const Chain& progName); 36 ~Logger(); 37 38 void logModule(unsigned long modId, const Chain& module, LogLevel level); 39 40 void log(unsigned long modId, LogLevel level, const Chain& msg); 41 42 Logger& operator << ( const LogLevel& level); 43 Logger& operator << ( const Chain& str); 44 Logger& operator << ( const char* str); 45 Logger& operator << ( unsigned long modId); 46 47 private: 48 49 class ModEntry { 50 51 public: 52 ModEntry()53 ModEntry() 54 { 55 } 56 ModEntry(unsigned long modId)57 ModEntry(unsigned long modId) 58 { 59 _modId = modId; 60 } 61 ModEntry(unsigned long modId,const Chain & module,LogLevel level)62 ModEntry(unsigned long modId, const Chain& module, LogLevel level) 63 { 64 _modId = modId; 65 _module = module; 66 _level = level; 67 } 68 getLogLevel()69 LogLevel getLogLevel() 70 { 71 return _level; 72 } 73 setLevel(LogLevel level)74 void setLevel(LogLevel level) 75 { 76 _level = level; 77 } 78 getModule()79 const Chain& getModule() 80 { 81 return _module; 82 } 83 setModule(const Chain & module)84 void setModule(const Chain& module) 85 { 86 _module = module; 87 } 88 89 bool operator == (const ModEntry& me) 90 { 91 if ( _modId == me._modId ) 92 return true; 93 return false; 94 } 95 96 ModEntry& operator = (const ModEntry& me) 97 { 98 _modId = me._modId; 99 _module = me._module; 100 _level = me._level; 101 return (*this); 102 } 103 104 105 private: 106 107 unsigned long _modId; 108 Chain _module; 109 LogLevel _level; 110 }; 111 112 LogLevel _logLevel; 113 LogLevel _msgLevel; 114 unsigned long _modId; 115 SetT<ModEntry> _modSet; 116 117 File* _pF; 118 119 #ifndef DISABLE_SYSLOG 120 bool _writeSysLog; 121 #endif 122 123 }; 124 125 126 127 #endif 128 129 130 131