00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00024 #ifndef SCALESTACK_KERNEL_LOG_H
00025 #define SCALESTACK_KERNEL_LOG_H
00026
00027 #include <scalestack/kernel/macros.h>
00028
00029 namespace scalestack
00030 {
00031 namespace kernel
00032 {
00033
00037 class SCALESTACK_API log
00038 {
00039 public:
00040
00044 enum level
00045 {
00046 LEVEL_FATAL,
00047 LEVEL_ERROR,
00048 LEVEL_NOTICE,
00049 LEVEL_INFO,
00050 LEVEL_DEBUG
00051 };
00052
00056 static const char* level_name(log::level log_level);
00057
00058 log(void);
00059
00060 virtual ~log();
00061
00069 virtual void write_log(log::level log_level,
00070 const char* context,
00071 const char* message) = 0;
00072
00073 private:
00074
00078 log(const log&);
00079
00083 log& operator=(const log&);
00084 };
00085
00086
00087
00088
00089
00090 inline const char* log::level_name(log::level log_level)
00091 {
00092 switch (log_level)
00093 {
00094 case log::LEVEL_FATAL:
00095 return "FATAL";
00096 case log::LEVEL_ERROR:
00097 return "ERROR";
00098 case log::LEVEL_NOTICE:
00099 return "NOTICE";
00100 case log::LEVEL_INFO:
00101 return "INFO";
00102 case log::LEVEL_DEBUG:
00103 return "DEBUG";
00104 default:
00105 return "(BAD)";
00106 };
00107 }
00108
00109 inline log::log(void)
00110 {
00111 }
00112
00113 inline log::~log()
00114 {
00115 }
00116
00117 }
00118 }
00119
00120 #endif