version 0.1.11
[fms.git] / include / logfile.h
1 #ifndef _logfile_\r
2 #define _logfile_\r
3 \r
4 //#include <zthread/Singleton.h>\r
5 //#include <zthread/Mutex.h>\r
6 #include "pthreadwrapper/mutex.h"\r
7 #include <string>\r
8 #include "pthreadwrapper/singleton.h"\r
9 \r
10 class LogFile:public PThread::Singleton<LogFile>\r
11 {\r
12 public:\r
13         LogFile();\r
14         LogFile(const std::string &filename);\r
15         ~LogFile();\r
16 \r
17         enum LogLevel\r
18         {\r
19                 LOGLEVEL_FATAL=0,\r
20                 LOGLEVEL_ERROR=1,\r
21                 LOGLEVEL_WARNING=2,\r
22                 LOGLEVEL_INFO=3,\r
23                 LOGLEVEL_DEBUG=4\r
24         };\r
25         \r
26         bool OpenFile();\r
27         bool CloseFile();\r
28         \r
29         std::string GetFileName() { return m_filename; }\r
30         void SetFileName(std::string filename) { m_filename=filename; }\r
31         \r
32         const bool GetWriteDate() { return m_writedate; }\r
33         void SetWriteDate(const bool writedate) { m_writedate=writedate; }\r
34         \r
35         const bool GetWriteLogLevel() { return m_writeloglevel; }\r
36         void SetWriteLogLevel(const bool writeloglevel) { m_writeloglevel=writeloglevel; }\r
37         \r
38         const LogLevel GetLogLevel() { return m_loglevel; }\r
39         void SetLogLevel(const LogLevel loglevel) { m_loglevel=loglevel; }\r
40 \r
41         const bool GetWriteNewLine() { return m_writenewline; }\r
42         void SetWriteNewLine(const bool writenewline) { m_writenewline=writenewline; }\r
43         \r
44         void WriteLog(const char *format, ...);\r
45         void WriteLog(const std::string &text);\r
46         void WriteLog(const LogLevel level, const char *format, ...);\r
47         void WriteLog(const LogLevel level, const std::string &text);\r
48 \r
49         void WriteNewLine();\r
50         \r
51 private:\r
52         void WriteDate();\r
53         void WriteLogLevel(LogLevel level);\r
54 \r
55         FILE *m_fileptr;\r
56         std::string m_filename;\r
57         LogLevel m_loglevel;\r
58         bool m_writedate;\r
59         bool m_writeloglevel;\r
60         bool m_writenewline;\r
61         char *m_datebuffer;\r
62 \r
63         PThread::Mutex m_logmutex;\r
64         \r
65 };\r
66 \r
67 #endif  // _logfile_\r