Go to the documentation of this file.
10 #ifndef RAD_LOGGER_HPP
11 #define RAD_LOGGER_HPP
13 #include <log4cplus/logger.h>
14 #include <log4cplus/loggingmacros.h>
15 #include <log4cplus/version.h>
16 #include <log4cplus/configurator.h>
17 #if LOG4CPLUS_VERSION >= LOG4CPLUS_MAKE_VERSION(2,0,0)
18 #include <log4cplus/initializer.h>
22 #define RAD_TRACE(logger)
24 #define RAD_TRACE(logger) \
25 LOG4CPLUS_TRACE(logger, __FILE__ << " " << __FUNCTION__ << " " << __LINE__)
29 #define LOG4CPLUS_STATE(logger, log_event) \
30 if (logger.isEnabledFor(log4cplus::STATE_LOG_LEVEL)) { \
31 log4cplus::tostringstream _log4cplus_buf; \
32 _log4cplus_buf << log_event; \
33 logger.forcedLog(log4cplus::STATE_LOG_LEVEL, _log4cplus_buf.str(), __FILE__, __LINE__); \
36 #define LOG4CPLUS_EVENT(logger, log_event) \
37 if (logger.isEnabledFor(log4cplus::EVENT_LOG_LEVEL)) { \
38 log4cplus::tostringstream _log4cplus_buf; \
39 _log4cplus_buf << log_event; \
40 logger.forcedLog(log4cplus::EVENT_LOG_LEVEL, _log4cplus_buf.str(), __FILE__, __LINE__); \
43 #define LOG4CPLUS_ACTION(logger, log_event) \
44 if (logger.isEnabledFor(log4cplus::ACTION_LOG_LEVEL)) { \
45 log4cplus::tostringstream _log4cplus_buf; \
46 _log4cplus_buf << log_event; \
47 logger.forcedLog(log4cplus::ACTION_LOG_LEVEL, _log4cplus_buf.str(), __FILE__, __LINE__); \
50 #define LOG4CPLUS_GUARD(logger, log_event) \
51 if (logger.isEnabledFor(log4cplus::GUARD_LOG_LEVEL)) { \
52 log4cplus::tostringstream _log4cplus_buf; \
53 _log4cplus_buf << log_event; \
54 logger.forcedLog(log4cplus::GUARD_LOG_LEVEL, _log4cplus_buf.str(), __FILE__, __LINE__); \
61 const LogLevel STATE_LOG_LEVEL = 10105;
62 const LogLevel EVENT_LOG_LEVEL = 10104;
63 const LogLevel ACTION_LOG_LEVEL = 10102;
64 const LogLevel GUARD_LOG_LEVEL = 10101;
68 static log4cplus::tstring
const STATE_LOG_LEVEL_STR(LOG4CPLUS_TEXT(
"STATE"));
69 static log4cplus::tstring
const EVENT_LOG_LEVEL_STR(LOG4CPLUS_TEXT(
"EVENT"));
70 static log4cplus::tstring
const ACTION_LOG_LEVEL_STR(LOG4CPLUS_TEXT(
"ACTION"));
71 static log4cplus::tstring
const GUARD_LOG_LEVEL_STR(LOG4CPLUS_TEXT(
"GUARD"));
72 static log4cplus::tstring
const EMPTY_LOG_LEVEL_STR(LOG4CPLUS_TEXT(
""));
85 [[deprecated(
"Replaced by rad::LogInitializer object")]]
88 [[deprecated(
"Replaced by rad::LogInitializer::Configure() method")]]
99 #if LOG4CPLUS_VERSION < LOG4CPLUS_MAKE_VERSION(2,0,0)
100 log4cplus::initialize();
102 log4cplus::BasicConfigurator().configure();
104 GetLogger().setLogLevel(log4cplus::INFO_LOG_LEVEL);
105 GetSmLogger().setLogLevel(log4cplus::INFO_LOG_LEVEL);
110 log4cplus::getLogLevelManager().pushToStringMethod(rad::RadLogLevelToString);
111 log4cplus::getLogLevelManager().pushFromStringMethod(rad::RadStringToLogLevel);
116 #if LOG4CPLUS_VERSION < LOG4CPLUS_MAKE_VERSION(2,0,0)
117 log4cplus::Logger::shutdown();
121 inline void Configure(
const std::string& filename =
"") {
122 if (filename.size() > 0) {
123 log4cplus::PropertyConfigurator::doConfigure(filename);
124 LOG4CPLUS_INFO(
GetLogger(),
"Loaded log properties: " << filename);
132 #if LOG4CPLUS_VERSION >= LOG4CPLUS_MAKE_VERSION(2,0,0)
133 log4cplus::Initializer mInitializer;
144 #include <rad/helper.hpp>
201 fprintf(stdout,
"%s %s %s %s", rad::GetTimestamp().c_str(),
ModuleName().c_str(),
218 return reporting_level;
222 static bool is_console_enabled =
false;
223 return is_console_enabled;
227 static bool is_logmon_enabled =
false;
228 return is_logmon_enabled;
236 static std::string mod_name =
"";
241 static const char*
const buffer[] = {
"ERROR",
"WARNING",
"STATE",
"EVENT",
"GUARD",
242 "ACTION",
"INFO",
"DEBUG",
"DEBUG1",
"DEBUG2",
243 "DEBUG3",
"DEBUG4",
"TRACE"};
281 Logger().
Get(
level) << filename <<
":" << linenum <<
" " << funcname;
308 #ifndef RAD_LOG_MAX_LEVEL
309 #define RAD_LOG_MAX_LEVEL rad::LOG_LEVEL_TRACE
312 #define RAD_LOG_SETLEVEL(levelName) \
313 rad::Logger::ReportingLevel() = rad::Logger::LevelFromString(levelName)
315 #define RAD_LOG_SETMODNAME(name) rad::Logger::ModuleName() = name
316 #define RAD_LOG_SETPROCNAME(name) rad::Logger::ProcName() = name
317 #define RAD_LOG_TO_LOGMON(is_enabled) rad::Logger::EnableLogMon() = is_enabled
318 #define RAD_LOG_TO_CONSOLE(is_enabled) rad::Logger::EnableConsole() = is_enabled
320 #define RAD_LOG(level) \
321 if (level > RAD_LOG_MAX_LEVEL) \
323 else if (level > rad::Logger::ReportingLevel()) \
325 else if (rad::Logger::IsEnabled() == false) \
328 rad::Logger().Get(level) << __FILE__ << ":" << __LINE__ << " "
330 #define RAD_LOG_ERROR() \
331 if (rad::LOG_LEVEL_ERROR > rad::Logger::ReportingLevel() || !rad::Logger::IsEnabled()) \
334 rad::Logger().Get(rad::LOG_LEVEL_ERROR) << __FILE__ << ":" << __LINE__ << " "
336 #define RAD_LOG_WARNING() \
337 if (rad::LOG_LEVEL_WARNING > rad::Logger::ReportingLevel() || !rad::Logger::IsEnabled()) \
340 rad::Logger().Get(rad::LOG_LEVEL_WARNING) << __FILE__ << ":" << __LINE__ << " "
342 #define RAD_LOG_INFO() \
343 if (rad::LOG_LEVEL_INFO > rad::Logger::ReportingLevel() || !rad::Logger::IsEnabled()) \
346 rad::Logger().Get(rad::LOG_LEVEL_INFO)
348 #define RAD_LOG_DEBUG() \
349 if (rad::LOG_LEVEL_DEBUG > rad::Logger::ReportingLevel() || !rad::Logger::IsEnabled()) \
352 rad::Logger().Get(rad::LOG_LEVEL_DEBUG) << __FILE__ << ":" << __LINE__ << " "
354 #define RAD_LOG_DEBUG1() \
355 if (rad::LOG_LEVEL_DEBUG1 > rad::Logger::ReportingLevel() || !rad::Logger::IsEnabled()) \
358 rad::Logger().Get(rad::LOG_LEVEL_DEBUG1) << __FILE__ << ":" << __LINE__ << " "
360 #define RAD_LOG_DEBUG2() \
361 if (rad::LOG_LEVEL_DEBUG2 > rad::Logger::ReportingLevel() || !rad::Logger::IsEnabled()) \
364 rad::Logger().Get(rad::LOG_LEVEL_DEBUG2) << __FILE__ << ":" << __LINE__ << " "
366 #define RAD_LOG_DEBUG3() \
367 if (rad::LOG_LEVEL_DEBUG3 > rad::Logger::ReportingLevel() || !rad::Logger::IsEnabled()) \
370 rad::Logger().Get(rad::LOG_LEVEL_DEBUG3) << __FILE__ << ":" << __LINE__ << " "
372 #define RAD_LOG_DEBUG4() \
373 if (rad::LOG_LEVEL_DEBUG4 > rad::Logger::ReportingLevel() || !rad::Logger::IsEnabled()) \
376 rad::Logger().Get(rad::LOG_LEVEL_DEBUG4) << __FILE__ << ":" << __LINE__ << " "
379 #define RAD_LOG_STATE(a, b) \
380 rad::LogStateFunction(a, b); \
381 (void)("LCOV_EXCL_BR_LINE")
382 #define RAD_LOG_EVENT(a) \
383 rad::LogEventFunction(a); \
384 (void)("LCOV_EXCL_BR_LINE")
385 #define RAD_LOG_GUARD(a) \
386 rad::LogFunction(rad::LOG_LEVEL_GUARD, __FUNCTION__, a); \
387 (void)("LCOV_EXCL_BR_LINE")
388 #define RAD_LOG_ACTION(a) \
389 rad::LogFunction(rad::LOG_LEVEL_ACTION, __FUNCTION__, a); \
390 (void)("LCOV_EXCL_BR_LINE")
391 #define RAD_LOG_TRACE() \
392 rad::LogTraceFunction(rad::LOG_LEVEL_TRACE, __FILE__, __FUNCTION__, __LINE__); \
393 (void)("LCOV_EXCL_BR_LINE")
396 #endif // RAD_LOGGER_HPP
level
Definition: hellorad.py:30
@ LOG_LEVEL_DEBUG1
Definition: logger.hpp:161
@ LOG_LEVEL_GUARD
Definition: logger.hpp:157
Definition: logger.hpp:175
LogLevel
Definition: logger.hpp:151
@ LOG_LEVEL_DEBUG2
Definition: logger.hpp:162
void LogConfigure(const std::string &filename="")
Definition: logger.cpp:69
log4cplus::Logger & GetSmLogger()
Definition: logger.cpp:49
~LogInitializer()
Definition: logger.hpp:115
void Configure(const std::string &filename="")
Definition: logger.hpp:121
static LogLevel LevelFromString(const std::string &level)
Definition: logger.hpp:247
@ LOG_LEVEL_DEBUG
Definition: logger.hpp:160
void LogTraceFunction(const LogLevel level, const char *filename, const char *funcname, const int linenum)
Definition: logger.hpp:278
LogInitializer()
Definition: logger.hpp:98
void LogFunction(const LogLevel level, const char *funcname, const std::string &a)
Definition: logger.hpp:285
static LogLevel & ReportingLevel()
Definition: logger.hpp:216
@ LOG_LEVEL_TRACE
Definition: logger.hpp:165
LogInitializer(const LogInitializer &)=delete
@ LOG_LEVEL_DEBUG3
Definition: logger.hpp:163
@ LOG_LEVEL_UNKNOWN
Definition: logger.hpp:152
const int LOG_TIMESTAMP_MAXLEN
Definition: logger.hpp:170
const std::string LOGGER_NAME
Definition: logger.hpp:79
std::ostringstream & Get(LogLevel level=LOG_LEVEL_INFO)
Definition: logger.hpp:211
@ LOG_LEVEL_ACTION
Definition: logger.hpp:158
@ LOG_LEVEL_WARNING
Definition: logger.hpp:154
@ LOG_LEVEL_DEBUG4
Definition: logger.hpp:164
void LogInitialize()
Definition: logger.cpp:54
Logger()
Definition: logger.hpp:177
Definition: logger.hpp:96
static bool IsEnabled()
Definition: logger.hpp:231
Definition: actionCallback.hpp:21
static std::string LevelToString(LogLevel level)
Definition: logger.hpp:240
log4cplus::Logger & GetLogger()
Definition: logger.cpp:44
static bool & EnableConsole()
Definition: logger.hpp:221
const int LOG_MAX_LEVEL
Definition: logger.hpp:168
@ LOG_LEVEL_ERROR
Definition: logger.hpp:153
static std::string & ModuleName()
Definition: logger.hpp:235
static bool & EnableLogMon()
Definition: logger.hpp:226
@ LOG_LEVEL_EVENT
Definition: logger.hpp:156
@ LOG_LEVEL_INFO
Definition: logger.hpp:159
std::ostringstream m_output
Definition: logger.hpp:191
@ LOG_LEVEL_STATE
Definition: logger.hpp:155
virtual ~Logger()
Definition: logger.hpp:198
const std::string SM_LOGGER_NAME
Definition: logger.hpp:80
void LogEventFunction(const std::string &a)
Definition: logger.hpp:297
void LogStateFunction(const std::string &a, const std::string &b)
Definition: logger.hpp:291
static std::string & ProcName()
LogInitializer & operator=(const LogInitializer &)=delete
const int LOG_MAX_LEN
Definition: logger.hpp:169