From: Maxim Mamontov Date: Sat, 10 Jan 2015 19:51:12 +0000 (+0200) Subject: More convenient logger. X-Git-Tag: 2.409~224 X-Git-Url: https://git.stg.codes/stg.git/commitdiff_plain/8bda633ffa7e6620b338829d69ab75445ff76605 More convenient logger. --- diff --git a/stglibs/logger.lib/include/stg/logger.h b/stglibs/logger.lib/include/stg/logger.h index c55801ac..115d1fb3 100644 --- a/stglibs/logger.lib/include/stg/logger.h +++ b/stglibs/logger.lib/include/stg/logger.h @@ -30,6 +30,7 @@ public: ~STG_LOGGER(); void SetLogFileName(const std::string & fn); void operator()(const char * fmt, ...) const; + void operator()(const std::string & line) const { LogString(line.c_str()); } private: STG_LOGGER(); @@ -37,6 +38,7 @@ private: STG_LOGGER & operator=(const STG_LOGGER & rvalue); const char * LogDate(time_t t) const; + void LogString(const char * str) const; std::string fileName; mutable pthread_mutex_t mutex; @@ -49,6 +51,7 @@ friend PLUGIN_LOGGER GetPluginLogger(const STG_LOGGER & logger, const std::strin public: PLUGIN_LOGGER(const PLUGIN_LOGGER & rhs); void operator()(const char * fmt, ...) const; + void operator()(const std::string & line) const; private: PLUGIN_LOGGER(const STG_LOGGER & logger, const std::string & pn); diff --git a/stglibs/logger.lib/logger.cpp b/stglibs/logger.lib/logger.cpp index 14c09591..6289618e 100644 --- a/stglibs/logger.lib/logger.cpp +++ b/stglibs/logger.lib/logger.cpp @@ -43,10 +43,33 @@ va_start(vl, fmt); vsnprintf(buff, sizeof(buff), fmt, vl); va_end(vl); -FILE * f; +LogString(buff); +} +//----------------------------------------------------------------------------- +const char * STG_LOGGER::LogDate(time_t t) const +{ +static char s[32]; +if (t == 0) + t = time(NULL); + +struct tm * tt = localtime(&t); + +snprintf(s, 32, "%d-%s%d-%s%d %s%d:%s%d:%s%d", + tt->tm_year + 1900, + tt->tm_mon + 1 < 10 ? "0" : "", tt->tm_mon + 1, + tt->tm_mday < 10 ? "0" : "", tt->tm_mday, + tt->tm_hour < 10 ? "0" : "", tt->tm_hour, + tt->tm_min < 10 ? "0" : "", tt->tm_min, + tt->tm_sec < 10 ? "0" : "", tt->tm_sec); + +return s; +} +//----------------------------------------------------------------------------- +void STG_LOGGER::LogString(const char * str) const +{ if (!fileName.empty()) { - f = fopen(fileName.c_str(), "at"); + FILE * f = fopen(fileName.c_str(), "at"); if (f) { #ifdef STG_TIME @@ -55,44 +78,25 @@ if (!fileName.empty()) fprintf(f, "%s", LogDate(time(NULL))); #endif fprintf(f, " -- "); - fprintf(f, "%s", buff); + fprintf(f, "%s", str); fprintf(f, "\n"); fclose(f); } else { openlog("stg", LOG_NDELAY, LOG_USER); - syslog(LOG_CRIT, "%s", buff); + syslog(LOG_CRIT, "%s", str); closelog(); } } else { openlog("stg", LOG_NDELAY, LOG_USER); - syslog(LOG_CRIT, "%s", buff); + syslog(LOG_CRIT, "%s", str); closelog(); } } //----------------------------------------------------------------------------- -const char * STG_LOGGER::LogDate(time_t t) const -{ -static char s[32]; -if (t == 0) - t = time(NULL); - -struct tm * tt = localtime(&t); - -snprintf(s, 32, "%d-%s%d-%s%d %s%d:%s%d:%s%d", - tt->tm_year + 1900, - tt->tm_mon + 1 < 10 ? "0" : "", tt->tm_mon + 1, - tt->tm_mday < 10 ? "0" : "", tt->tm_mday, - tt->tm_hour < 10 ? "0" : "", tt->tm_hour, - tt->tm_min < 10 ? "0" : "", tt->tm_min, - tt->tm_sec < 10 ? "0" : "", tt->tm_sec); - -return s; -} -//----------------------------------------------------------------------------- PLUGIN_LOGGER::PLUGIN_LOGGER(const STG_LOGGER & logger, const std::string & pn) : STG_LOGGER(), pluginName(pn) @@ -119,6 +123,11 @@ va_end(vl); STG_LOGGER::operator()("[%s] %s", pluginName.c_str(), buff); } //----------------------------------------------------------------------------- +void PLUGIN_LOGGER::operator()(const std::string & line) const +{ +STG_LOGGER::operator()("[%s] %s", pluginName.c_str(), line.c_str()); +} +//----------------------------------------------------------------------------- PLUGIN_LOGGER GetPluginLogger(const STG_LOGGER & logger, const std::string & pluginName) { return PLUGIN_LOGGER(logger, pluginName);