00001
00002
00003
00004 #ifndef LOG_H
00005 #define LOG_H
00006
00007 #include "dllexport.h"
00008
00009 #include <string>
00010 #include <ctime>
00011 #include <sstream>
00012 #ifdef HAVE_TR1
00013 #include <tr1/cstdint>
00014 #else
00015 #include <stdint.h>
00016 #endif
00017
00018 namespace SCS {
00019
00020 class DLL_PUBLIC LogWriter;
00021
00022 enum Level {
00023 L_UNSPEC=-1,
00024 L_FAIL = 0,
00025 L_ERROR = 1,
00026 L_WARN = 2,
00027 L_INFO = 3
00028 };
00029
00033 struct DLL_PUBLIC LogEntry {
00034 Level lvl;
00035 std::string txt;
00036 time_t time;
00037 };
00038
00039
00051 class DLL_PUBLIC Log {
00052 public:
00056 Log();
00057
00061 static Log& Info(Log& log);
00062
00066 static Log& Warn(Log& log);
00067
00071 static Log& Error(Log& log);
00072
00076 static Log& Fail(Log& log);
00077
00081 static Log& endl(Log& log);
00082
00087 Log& operator<<(int i);
00088
00093 Log& operator<<(uint32_t u32);
00094
00099 Log& operator<<(float f);
00100
00105 Log& operator<<(double d);
00106
00111 Log& operator<<(char c);
00112
00117 Log& operator<<(const std::string& s);
00118
00119 Log& operator<<(Log& (*f)(Log&));
00120
00121 private:
00122 Level m_severity;
00123 LogWriter& m_writer;
00124 std::ostringstream m_stream;
00125 };
00126 }
00127
00128 #endif // LOG_H