00001
00002
00003
00004
00005
00006
00007
00008
00009 #ifndef __TOOLBOX_LOGGER_H
00010 #define __TOOLBOX_LOGGER_H
00011
00012
00016 #define LOG_NEVER 127
00017
00021 #define LOG_SESSIONSEPARATOR "\n-------------------------------------------------------------------------------\n"
00022
00029 #define LOG_DEBUG 1
00030
00037 #define LOG_INFO 2
00038
00044 #define LOG_WARN 3
00045
00051 #define LOG_ERROR 4
00052
00058 #define LOG_EXCEPTION 5
00059
00065 #define LOG_FATAL 6
00066
00067
00068
00069
00073 #define LOGPRINTF0(type, format) \
00074 (Logger::Get()!=NULL ? Logger::Get()->Printf(__FILE__, __LINE__, (type), (format)) \
00075 : 0)
00076
00079 #define LOGPRINTF1(type, format, p1) \
00080 (Logger::Get()!=NULL ? Logger::Get()->Printf(__FILE__, __LINE__, (type), (format), \
00081 (p1)) : 0)
00082
00085 #define LOGPRINTF2(type, format, p1, p2) \
00086 (Logger::Get()!=NULL ? Logger::Get()->Printf(__FILE__, __LINE__, (type), (format), \
00087 (p1), (p2)) : 0)
00088
00091 #define LOGPRINTF3(type, format, p1, p2, p3) \
00092 (Logger::Get()!=NULL ? Logger::Get()->Printf(__FILE__, __LINE__, (type), (format), \
00093 (p1), (p2), (p3)) : 0)
00094
00097 #define LOGPRINTF4(type, format, p1, p2, p3, p4) \
00098 (Logger::Get()!=NULL ? Logger::Get()->Printf(__FILE__, __LINE__, (type), (format), \
00099 (p1), (p2), (p3), (p4)) : 0)
00100
00103 #define LOGPRINTF5(type, format, p1, p2, p3, p4, p5) \
00104 (Logger::Get()!=NULL ? Logger::Get()->Printf(__FILE__, __LINE__, (type), (format), \
00105 (p1), (p2), (p3), (p4), (p5)) : 0)
00106
00109 #define LOGPRINTF6(type, format, p1, p2, p3, p4, p5, p6) \
00110 (Logger::Get()!=NULL ? Logger::Get()->Printf(__FILE__, __LINE__, (type), (format), \
00111 (p1), (p2), (p3), (p4), (p5), (p6)) : 0)
00112
00115 #define LOGPRINTF7(type, format, p1, p2, p3, p4, p5, p6, p7) \
00116 (Logger::Get()!=NULL ? Logger::Get()->Printf(__FILE__, __LINE__, (type), (format), \
00117 (p1), (p2), (p3), (p4), (p5), (p6), (p7)) : 0)
00118
00121 #define LOGPRINTF8(type, format, p1, p2, p3, p4, p5, p6, p7, p8) \
00122 (Logger::Get()!=NULL ? Logger::Get()->Printf(__FILE__, __LINE__, (type), (format), \
00123 (p1), (p2), (p3), (p4), (p5), (p6), (p7), (p8)) : 0)
00124
00127 #define LOGPRINTF9(type, format, p1, p2, p3, p4, p5, p6, p7, p8, p9) \
00128 (Logger::Get()!=NULL ? Logger::Get()->Printf(__FILE__, __LINE__, (type), (format), \
00129 (p1), (p2), (p3), (p4), (p5), (p6), (p7), (p8), (p9)) : 0)
00130
00133 #define LOGPRINTF10(type, format, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10) \
00134 (Logger::Get()!=NULL ? Logger::Get()->Printf(__FILE__, __LINE__, (type), (format), \
00135 (p1), (p2), (p3), (p4), (p5), (p6), (p7), (p8), (p9), (p10)) : 0)
00136
00137
00138 namespace toolbox
00139 {
00145 class Logger
00146 {
00147 private:
00148
00152 FILE * File;
00153
00157 char * FileName;
00158
00159 #ifdef _TOOLBOX_TEST
00160
00163 static int InstanceCount;
00164 #endif
00165
00169 int LogLevel;
00170
00174 bool OptionSet;
00175
00179 static Logger Singleton;
00180
00184 Logger();
00185
00189 void Close();
00190
00194 bool Open();
00195
00199 unsigned long StartTickCount;
00200
00205 void WriteTimeStampPrefix(int type);
00206
00210 void WriteTimeStampPrefix();
00211
00212 public:
00213
00217 ~Logger();
00218
00222 static inline Logger * Get();
00223
00238 short Printf(const char * source, long lineNumber, int type,
00239 const char * format, ...);
00240
00241 #ifdef _TOOLBOX_TEST
00242
00248 static void RunTestSuite(int * performedTests, int * failedTests);
00249 #endif
00250 };
00251 }
00252
00253
00254 #endif