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