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