Log.h

Go to the documentation of this file.
00001 
00006 #ifndef GENETIK_UTIL_LOG
00007 #define GENETIK_UTIL_LOG
00008 
00009 #include <string>
00010 #include <iosfwd>
00011 
00012 using std::string;
00013 using std::ostream;
00014 
00015 namespace genetiK
00016 {
00017 namespace util
00018 {
00024 typedef enum{
00027         DEBUG,
00030         INFO,
00033         WARN,
00036         ERROR,
00040         FATAL,
00044         NONE
00045 } ELogLevel;
00046 
00056 class Log
00057 {
00058 private:
00059         Log();
00060 
00061         Log(const Log&) {}
00062 
00063         Log&                                    operator= (const Log&) { return *self; }
00064 
00065         virtual ~Log();
00066 
00067         static Log*                             self;
00068 
00069         ELogLevel                               threshold;      
00070 
00071         ostream*                                target;
00072 
00073 public:
00080         static Log*                             getInstance();
00081 
00084         static void                             deleteInstance();
00085 
00091         void                                    setLevel (ELogLevel level) { threshold = level; }
00092 
00098         ELogLevel                               getLevel() const { return threshold; }
00099 
00104         int                                     setTarget (ostream* targetStream);
00105 
00112         int                                     setTarget (const char* filename, bool append);
00113 
00117         ostream*                                getTarget() const { return target; }
00118 
00127         int                                     output(ELogLevel level, const string& message);
00128         
00134         int                                     debug(const string& message) { return output(DEBUG, message); }
00135 
00141         int                                     info(const string& message) { return output(INFO, message); }
00142 
00148         int                                     warn(const string& message) { return output(WARN, message); }
00149 
00155         int                                     error(const string& message) { return output(ERROR, message); }
00156 
00162         int                                     fatal(const string& message) { return output(FATAL, message); }
00163 
00168         bool                                    isDebugEnabled() const { return threshold <= DEBUG; }
00169 
00174         bool                                    isInfoEnabled() const { return threshold <= INFO; }
00175 
00180         bool                                    isWarnEnabled() const { return threshold <= WARN; }
00181 
00186         bool                                    isErrorEnabled() const { return threshold <= ERROR; }
00187 
00192         bool                                    isFatalEnabled() const { return threshold <= FATAL; }
00193 
00199         bool                                    isEnabled(ELogLevel level) const { return threshold <= level; }
00200 
00201 };
00202 
00203 }
00204 }
00205 
00206 #endif

Generated on Thu Feb 23 12:20:45 2006 for GenetiK by  doxygen 1.4.6