1 #include "stg/logger.h"
8 extern const volatile time_t stgTime;
10 //-----------------------------------------------------------------------------
11 STG_LOGGER & GetStgLogger()
13 static STG_LOGGER logger;
16 //-----------------------------------------------------------------------------
17 STG_LOGGER::STG_LOGGER()
21 pthread_mutex_init(&mutex, NULL);
23 //-----------------------------------------------------------------------------
24 STG_LOGGER::~STG_LOGGER()
26 pthread_mutex_destroy(&mutex);
28 //-----------------------------------------------------------------------------
29 void STG_LOGGER::SetLogFileName(const std::string & fn)
31 STG_LOGGER_LOCKER lock(&mutex);
34 //-----------------------------------------------------------------------------
35 void STG_LOGGER::operator()(const char * fmt, ...) const
37 STG_LOGGER_LOCKER lock(&mutex);
43 vsnprintf(buff, sizeof(buff), fmt, vl);
48 //-----------------------------------------------------------------------------
49 const char * STG_LOGGER::LogDate(time_t t) const
55 struct tm * tt = localtime(&t);
57 snprintf(s, 32, "%d-%s%d-%s%d %s%d:%s%d:%s%d",
59 tt->tm_mon + 1 < 10 ? "0" : "", tt->tm_mon + 1,
60 tt->tm_mday < 10 ? "0" : "", tt->tm_mday,
61 tt->tm_hour < 10 ? "0" : "", tt->tm_hour,
62 tt->tm_min < 10 ? "0" : "", tt->tm_min,
63 tt->tm_sec < 10 ? "0" : "", tt->tm_sec);
67 //-----------------------------------------------------------------------------
68 void STG_LOGGER::LogString(const char * str) const
70 if (!fileName.empty())
72 FILE * f = fopen(fileName.c_str(), "at");
76 fprintf(f, "%s", LogDate(stgTime));
78 fprintf(f, "%s", LogDate(time(NULL)));
81 fprintf(f, "%s", str);
87 openlog("stg", LOG_NDELAY, LOG_USER);
88 syslog(LOG_CRIT, "%s", str);
94 openlog("stg", LOG_NDELAY, LOG_USER);
95 syslog(LOG_CRIT, "%s", str);
99 //-----------------------------------------------------------------------------
100 PLUGIN_LOGGER::PLUGIN_LOGGER(const STG_LOGGER& logger, const std::string& pn)
105 //-----------------------------------------------------------------------------
106 void PLUGIN_LOGGER::operator()(const char * fmt, ...) const
112 vsnprintf(buff, sizeof(buff), fmt, vl);
115 m_parent("[%s] %s", m_pluginName.c_str(), buff);
117 //-----------------------------------------------------------------------------
118 void PLUGIN_LOGGER::operator()(const std::string & line) const
120 m_parent("[%s] %s", m_pluginName.c_str(), line.c_str());
122 //-----------------------------------------------------------------------------
123 PLUGIN_LOGGER GetPluginLogger(const STG_LOGGER & logger, const std::string & pluginName)
125 return PLUGIN_LOGGER(logger, pluginName);
127 //-----------------------------------------------------------------------------