Go to the documentation of this file.
13 #ifndef SCXML4CPP_LOG_H
14 #define SCXML4CPP_LOG_H
16 #include <log4cplus/logger.h>
17 #include <log4cplus/loggingmacros.h>
18 #include <log4cplus/configurator.h>
19 #include <log4cplus/version.h>
20 #if LOG4CPLUS_VERSION >= LOG4CPLUS_MAKE_VERSION(2,0,0)
21 #include <log4cplus/initializer.h>
26 #define SCXML4CPP_LOG_TRACE()
28 #define SCXML4CPP_LOG_TRACE() LOG4CPLUS_TRACE(scxml4cpp::GetLogger(), __FILE__ << " " << __FUNCTION__ << " " << __LINE__)
31 #define SCXML4CPP_LOG_INFO(msg) LOG4CPLUS_INFO(scxml4cpp::GetLogger(), msg)
32 #define SCXML4CPP_LOG_DEBUG(msg) LOG4CPLUS_DEBUG(scxml4cpp::GetLogger(), msg)
33 #define SCXML4CPP_LOG_WARNING(msg) LOG4CPLUS_WARN(scxml4cpp::GetLogger(), msg)
34 #define SCXML4CPP_LOG_ERROR(msg) LOG4CPLUS_ERROR(scxml4cpp::GetLogger(), msg)
35 #define SCXML4CPP_LOG_FATAL(msg) LOG4CPLUS_FATAL(scxml4cpp::GetLogger(), msg)
48 #if LOG4CPLUS_VERSION < LOG4CPLUS_MAKE_VERSION(2,0,0)
49 log4cplus::initialize();
51 log4cplus::BasicConfigurator().configure();
52 GetLogger().setLogLevel(log4cplus::INFO_LOG_LEVEL);
56 #if LOG4CPLUS_VERSION < LOG4CPLUS_MAKE_VERSION(2,0,0)
57 log4cplus::Logger::shutdown();
65 #if LOG4CPLUS_VERSION >= LOG4CPLUS_MAKE_VERSION(2,0,0)
66 log4cplus::Initializer mInitializer;
97 inline std::string LogNowTime();
103 template <
typename T>
class Log
122 os <<
" " << ToString(
level) <<
" ";
129 inline static int& ReportingLevel() {
131 return reportingLevel;
137 inline static std::string ToString(
const int level) {
138 static const char*
const buffer[] = {
155 inline static int FromString(
const std::string&
level) {
156 if (
level ==
"TRACE")
158 if (
level ==
"DEBUG4")
160 if (
level ==
"DEBUG3")
162 if (
level ==
"DEBUG2")
164 if (
level ==
"DEBUG1")
166 if (
level ==
"DEBUG")
170 if (
level ==
"WARNING")
172 if (
level ==
"ERROR")
174 Log<T>().Get(
LOG_LEVEL_WARNING) <<
"Unknown logging level '" <<
level <<
"'. Using INFO level as default.";
179 std::ostringstream os;
183 Log& operator =(
const Log&);
192 inline static FILE*& Stream() {
193 static FILE* pStream = stderr;
197 static void Output(
const std::string& msg) {
198 FILE* pStream = Stream();
199 if (!pStream)
return;
201 fprintf(pStream,
"%s", msg.c_str());
209 inline void LogSetLevel(
const std::string& levelName) {
210 Log<scxml4cpp::Output2FILE>::ReportingLevel() = Log<scxml4cpp::Output2FILE>::FromString(levelName);
218 inline std::string LogNowTime()
224 strftime(buffer,
sizeof(buffer),
"%Y-%m-%d %H:%M:%S", localtime_r(&t, &r));
226 gettimeofday(&tv, 0);
227 char result[100] = {0};
228 sprintf(result,
"%s.%06ld", buffer, (
long)tv.tv_usec / 1000);
237 #define SCXML4CPP_LOG(level) \
238 if (level > scxml4cpp::LOG_MAX_LEVEL) ; \
239 else if (level > scxml4cpp::Log<scxml4cpp::Output2FILE>::ReportingLevel() || !scxml4cpp::Output2FILE::Stream()) ; \
240 else scxml4cpp::Log<scxml4cpp::Output2FILE>().Get(level) << "scxml4cpp " << __FILE__ << " " << __FUNCTION__ << " " << __LINE__ << " "
242 #define SCXML4CPP_LOG_TRACE() SCXML4CPP_LOG(scxml4cpp::LOG_LEVEL_TRACE)
243 #define SCXML4CPP_LOG_DEBUG() SCXML4CPP_LOG(scxml4cpp::LOG_LEVEL_DEBUG)
244 #define SCXML4CPP_LOG_DEBUG1() SCXML4CPP_LOG(scxml4cpp::LOG_LEVEL_DEBUG1)
245 #define SCXML4CPP_LOG_DEBUG2() SCXML4CPP_LOG(scxml4cpp::LOG_LEVEL_DEBUG2)
246 #define SCXML4CPP_LOG_DEBUG3() SCXML4CPP_LOG(scxml4cpp::LOG_LEVEL_DEBUG3)
247 #define SCXML4CPP_LOG_DEBUG4() SCXML4CPP_LOG(scxml4cpp::LOG_LEVEL_DEBUG4)
248 #define SCXML4CPP_LOG_INFO() SCXML4CPP_LOG(scxml4cpp::LOG_LEVEL_INFO)
249 #define SCXML4CPP_LOG_WARNING() SCXML4CPP_LOG(scxml4cpp::LOG_LEVEL_WARNING)
250 #define SCXML4CPP_LOG_ERROR() SCXML4CPP_LOG(scxml4cpp::LOG_LEVEL_ERROR)
253 #endif //SCXML4CPP_LOG_H
LogInitializer & operator=(const LogInitializer &)=delete
level
Definition: hellorad.py:30
@ LOG_LEVEL_DEBUG1
Definition: logger.hpp:161
@ LOG_LEVEL_DEBUG2
Definition: logger.hpp:162
~LogInitializer()
Definition: Log.h:55
@ LOG_LEVEL_DEBUG
Definition: logger.hpp:160
@ LOG_LEVEL_TRACE
Definition: logger.hpp:165
@ LOG_LEVEL_DEBUG3
Definition: logger.hpp:163
@ LOG_LEVEL_WARNING
Definition: logger.hpp:154
LogInitializer(const LogInitializer &)=delete
@ LOG_LEVEL_DEBUG4
Definition: logger.hpp:164
LogInitializer()
Definition: Log.h:47
void LogSetLevel(const std::string &levelName)
Definition: Log.cpp:33
const int LOG_MAX_LEVEL
Definition: logger.hpp:168
@ LOG_LEVEL_ERROR
Definition: logger.hpp:153
log4cplus::Logger & GetLogger()
Definition: Log.cpp:41
@ LOG_LEVEL_INFO
Definition: logger.hpp:159
const std::string LOGGER_NAME
Definition: Log.h:40