/[projects]/smsdaemon/Logger.cpp
ViewVC logotype

Annotation of /smsdaemon/Logger.cpp

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1011 - (hide annotations) (download)
Thu Aug 5 06:53:38 2010 UTC (13 years, 9 months ago) by torben
File size: 2127 byte(s)
change log date format to yyyy-mm-dd
1 torben 159 #include "Logger.h"
2    
3     #include "Common.h"
4 torben 175 #include "ConfigFile.h"
5 torben 159 #include <iostream>
6     #include <sstream>
7     #include <fstream>
8     #include <iomanip>
9    
10 torben 175 #include <stdlib.h>
11     #include <syslog.h>
12    
13 torben 159 using namespace std;
14    
15     const char* Months[] = { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov","Dec"};
16    
17     namespace Logger
18     {
19     string _logFile;
20 torben 175
21 torben 694 std::vector<std::string> logBuffer;
22    
23 torben 196 enum LogDest
24 torben 175 {
25     LogFile,
26     LogSyslog,
27     LogStdout
28     };
29    
30     LogDest logger;
31    
32     void initLog()
33     {
34     Common* cmn = Common::instance();
35 torben 214 string logmethod = cmn->GetConfigfile()->GetValue("smsdaemon","log","");
36 torben 196 if (logmethod == "syslog")
37 torben 175 {
38     logger = LogSyslog;
39    
40     openlog("smsdaemon", 0 , LOG_DAEMON);
41 torben 196 }
42 torben 175 else if (logmethod == "logfile")
43     {
44     logger = LogFile;
45 torben 196 }
46 torben 175 else
47     {
48     cerr << "Invalid config file setting for 'log' : " << logmethod << endl;
49     exit(1);
50     }
51    
52 torben 196 if (cmn->isDebug)
53 torben 175 {
54     logger = LogStdout;
55     }
56     }
57    
58 torben 159 void setLogfile(std::string file)
59     {
60     _logFile = file;
61     }
62    
63     void logMessage(string msg)
64     {
65     Common* cmn = Common::instance();
66     time_t t = time(0);
67     tm now;
68     localtime_r(&t, &now);
69    
70     ostringstream out;
71 torben 694
72 torben 1011
73     out << (1900+now.tm_year) << "-" << setw(2) << setfill('0') << (now.tm_mon+1) << "-" << setw(2) << setfill('0') << now.tm_mday;
74 torben 694 out << " " << setw(2) << setfill('0') << now.tm_hour;
75     out << ":" << setw(2) << setfill('0') << now.tm_min;
76     out << ":" << setw(2) << setfill('0') << now.tm_sec;
77     out << " " << msg << endl;
78    
79     logBuffer.push_back( out.str() );
80    
81 torben 196 if (logger == LogFile || logger == LogStdout)
82 torben 175 {
83     if (cmn->isDaemon && _logFile != "" && cmn->daemonized)
84 torben 159 {
85 torben 175 seteuid(0);
86     ofstream of( _logFile.c_str(), ios_base::out | ios_base::app | ios_base::ate);//append mode
87     if (of)
88     {
89     of << out.str();
90     of.flush();
91     of.close();
92     }
93     seteuid( cmn->uid);
94 torben 159 }
95 torben 175 else
96     {
97     cout << out.str();
98     cout.flush();
99     }
100 torben 196 }
101 torben 175 else // logSyslog
102 torben 159 {
103 torben 175 syslog(LOG_INFO, "%s", msg.c_str());
104 torben 159 }
105     }
106 torben 695
107     std::string getLog()
108     {
109     std::ostringstream oss;
110     for (unsigned i=0; i<logBuffer.size(); i++) {
111     oss << logBuffer[i];
112     }
113    
114     return oss.str();
115     }
116 torben 159 }

  ViewVC Help
Powered by ViewVC 1.1.20