Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | File List | Class Members | File Members

Logger.h

Go to the documentation of this file.
00001 /*
00002  * This file is part of the ToolBox.
00003  * Copyright Thomas Jacob.
00004  *
00005  * READ README.TXT BEFORE USE!!
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 // Macro functions
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

Generated on Tue Oct 3 00:23:38 2006 for ToolBox by doxygen 1.3.6