10 #ifndef RAD_LOGGER_HPP
11 #define RAD_LOGGER_HPP
13 #include <log4cplus/logger.h>
14 #include <log4cplus/loggingmacros.h>
17 #define RAD_TRACE(logger)
19 #define RAD_TRACE(logger) \
20 LOG4CPLUS_TRACE(logger, __FILE__ << " " << __FUNCTION__ << " " << __LINE__)
24 #define LOG4CPLUS_STATE(logger, log_event) \
25 if (logger.isEnabledFor(log4cplus::STATE_LOG_LEVEL)) { \
26 log4cplus::tostringstream _log4cplus_buf; \
27 _log4cplus_buf << log_event; \
28 logger.forcedLog(log4cplus::STATE_LOG_LEVEL, _log4cplus_buf.str(), __FILE__, __LINE__); \
31 #define LOG4CPLUS_EVENT(logger, log_event) \
32 if (logger.isEnabledFor(log4cplus::EVENT_LOG_LEVEL)) { \
33 log4cplus::tostringstream _log4cplus_buf; \
34 _log4cplus_buf << log_event; \
35 logger.forcedLog(log4cplus::EVENT_LOG_LEVEL, _log4cplus_buf.str(), __FILE__, __LINE__); \
38 #define LOG4CPLUS_ACTION(logger, log_event) \
39 if (logger.isEnabledFor(log4cplus::ACTION_LOG_LEVEL)) { \
40 log4cplus::tostringstream _log4cplus_buf; \
41 _log4cplus_buf << log_event; \
42 logger.forcedLog(log4cplus::ACTION_LOG_LEVEL, _log4cplus_buf.str(), __FILE__, __LINE__); \
45 #define LOG4CPLUS_GUARD(logger, log_event) \
46 if (logger.isEnabledFor(log4cplus::GUARD_LOG_LEVEL)) { \
47 log4cplus::tostringstream _log4cplus_buf; \
48 _log4cplus_buf << log_event; \
49 logger.forcedLog(log4cplus::GUARD_LOG_LEVEL, _log4cplus_buf.str(), __FILE__, __LINE__); \
56 const LogLevel STATE_LOG_LEVEL = 10105;
57 const LogLevel EVENT_LOG_LEVEL = 10104;
58 const LogLevel ACTION_LOG_LEVEL = 10102;
59 const LogLevel GUARD_LOG_LEVEL = 10101;
63 static log4cplus::tstring
const STATE_LOG_LEVEL_STR(LOG4CPLUS_TEXT(
"STATE"));
64 static log4cplus::tstring
const EVENT_LOG_LEVEL_STR(LOG4CPLUS_TEXT(
"EVENT"));
65 static log4cplus::tstring
const ACTION_LOG_LEVEL_STR(LOG4CPLUS_TEXT(
"ACTION"));
66 static log4cplus::tstring
const GUARD_LOG_LEVEL_STR(LOG4CPLUS_TEXT(
"GUARD"));
67 static log4cplus::tstring
const EMPTY_LOG_LEVEL_STR(LOG4CPLUS_TEXT(
""));
94 #include <rad/helper.hpp>
136 inline static std::string&
ProcName();
151 fprintf(stdout,
"%s %s %s %s", rad::GetTimestamp().c_str(),
ModuleName().c_str(),
168 return reporting_level;
172 static bool is_console_enabled =
false;
173 return is_console_enabled;
177 static bool is_logmon_enabled =
false;
178 return is_logmon_enabled;
186 static std::string mod_name =
"";
191 static const char*
const buffer[] = {
"ERROR",
"WARNING",
"STATE",
"EVENT",
"GUARD",
192 "ACTION",
"INFO",
"DEBUG",
"DEBUG1",
"DEBUG2",
193 "DEBUG3",
"DEBUG4",
"TRACE"};
194 return (level < LOG_LEVEL_ERROR || level >
LOG_LEVEL_TRACE) ?
"" : buffer[level];
231 Logger().
Get(level) << filename <<
":" << linenum <<
" " << funcname;
237 Logger().
Get(level) << a <<
" (" << __FUNCTION__ <<
")";
258 #ifndef RAD_LOG_MAX_LEVEL
259 #define RAD_LOG_MAX_LEVEL rad::LOG_LEVEL_TRACE
262 #define RAD_LOG_SETLEVEL(levelName) \
263 rad::Logger::ReportingLevel() = rad::Logger::LevelFromString(levelName)
265 #define RAD_LOG_SETMODNAME(name) rad::Logger::ModuleName() = name
266 #define RAD_LOG_SETPROCNAME(name) rad::Logger::ProcName() = name
267 #define RAD_LOG_TO_LOGMON(is_enabled) rad::Logger::EnableLogMon() = is_enabled
268 #define RAD_LOG_TO_CONSOLE(is_enabled) rad::Logger::EnableConsole() = is_enabled
270 #define RAD_LOG(level) \
271 if (level > RAD_LOG_MAX_LEVEL) \
273 else if (level > rad::Logger::ReportingLevel()) \
275 else if (rad::Logger::IsEnabled() == false) \
278 rad::Logger().Get(level) << __FILE__ << ":" << __LINE__ << " "
280 #define RAD_LOG_ERROR() \
281 if (rad::LOG_LEVEL_ERROR > rad::Logger::ReportingLevel() || !rad::Logger::IsEnabled()) \
284 rad::Logger().Get(rad::LOG_LEVEL_ERROR) << __FILE__ << ":" << __LINE__ << " "
286 #define RAD_LOG_WARNING() \
287 if (rad::LOG_LEVEL_WARNING > rad::Logger::ReportingLevel() || !rad::Logger::IsEnabled()) \
290 rad::Logger().Get(rad::LOG_LEVEL_WARNING) << __FILE__ << ":" << __LINE__ << " "
292 #define RAD_LOG_INFO() \
293 if (rad::LOG_LEVEL_INFO > rad::Logger::ReportingLevel() || !rad::Logger::IsEnabled()) \
296 rad::Logger().Get(rad::LOG_LEVEL_INFO)
298 #define RAD_LOG_DEBUG() \
299 if (rad::LOG_LEVEL_DEBUG > rad::Logger::ReportingLevel() || !rad::Logger::IsEnabled()) \
302 rad::Logger().Get(rad::LOG_LEVEL_DEBUG) << __FILE__ << ":" << __LINE__ << " "
304 #define RAD_LOG_DEBUG1() \
305 if (rad::LOG_LEVEL_DEBUG1 > rad::Logger::ReportingLevel() || !rad::Logger::IsEnabled()) \
308 rad::Logger().Get(rad::LOG_LEVEL_DEBUG1) << __FILE__ << ":" << __LINE__ << " "
310 #define RAD_LOG_DEBUG2() \
311 if (rad::LOG_LEVEL_DEBUG2 > rad::Logger::ReportingLevel() || !rad::Logger::IsEnabled()) \
314 rad::Logger().Get(rad::LOG_LEVEL_DEBUG2) << __FILE__ << ":" << __LINE__ << " "
316 #define RAD_LOG_DEBUG3() \
317 if (rad::LOG_LEVEL_DEBUG3 > rad::Logger::ReportingLevel() || !rad::Logger::IsEnabled()) \
320 rad::Logger().Get(rad::LOG_LEVEL_DEBUG3) << __FILE__ << ":" << __LINE__ << " "
322 #define RAD_LOG_DEBUG4() \
323 if (rad::LOG_LEVEL_DEBUG4 > rad::Logger::ReportingLevel() || !rad::Logger::IsEnabled()) \
326 rad::Logger().Get(rad::LOG_LEVEL_DEBUG4) << __FILE__ << ":" << __LINE__ << " "
329 #define RAD_LOG_STATE(a, b) \
330 rad::LogStateFunction(a, b); \
331 (void)("LCOV_EXCL_BR_LINE")
332 #define RAD_LOG_EVENT(a) \
333 rad::LogEventFunction(a); \
334 (void)("LCOV_EXCL_BR_LINE")
335 #define RAD_LOG_GUARD(a) \
336 rad::LogFunction(rad::LOG_LEVEL_GUARD, __FUNCTION__, a); \
337 (void)("LCOV_EXCL_BR_LINE")
338 #define RAD_LOG_ACTION(a) \
339 rad::LogFunction(rad::LOG_LEVEL_ACTION, __FUNCTION__, a); \
340 (void)("LCOV_EXCL_BR_LINE")
341 #define RAD_LOG_TRACE() \
342 rad::LogTraceFunction(rad::LOG_LEVEL_TRACE, __FILE__, __FUNCTION__, __LINE__); \
343 (void)("LCOV_EXCL_BR_LINE")
346 #endif // RAD_LOGGER_HPP
static std::string & ProcName()
log4cplus::Logger & GetLogger()
Definition: logger.cpp:43
Definition: logger.hpp:103
const int LOG_MAX_LEVEL
Definition: logger.hpp:118
void LogEventFunction(const std::string &a)
Definition: logger.hpp:247
void LogStateFunction(const std::string &a, const std::string &b)
Definition: logger.hpp:241
void LogFunction(const LogLevel level, const char *funcname, const std::string &a)
Definition: logger.hpp:235
void LogInitialize()
Definition: logger.cpp:53
Definition: logger.hpp:106
Definition: logger.hpp:109
static std::string LevelToString(LogLevel level)
Definition: logger.hpp:190
Definition: logger.hpp:105
static LogLevel LevelFromString(const std::string &level)
Definition: logger.hpp:197
static bool & EnableLogMon()
Definition: logger.hpp:176
Definition: logger.hpp:125
std::ostringstream & Get(LogLevel level=LOG_LEVEL_INFO)
Definition: logger.hpp:161
std::ostringstream m_output
Definition: logger.hpp:141
static LogLevel & ReportingLevel()
Definition: logger.hpp:166
Logger()
Definition: logger.hpp:127
Definition: logger.hpp:107
const std::string LOGGER_NAME
Definition: logger.hpp:74
void LogTraceFunction(const LogLevel level, const char *filename, const char *funcname, const int linenum)
Definition: logger.hpp:228
static std::string & ModuleName()
Definition: logger.hpp:185
LogLevel
Definition: logger.hpp:101
Definition: logger.hpp:111
virtual ~Logger()
Definition: logger.hpp:148
Definition: logger.hpp:112
Definition: logger.hpp:110
const int LOG_MAX_LEN
Definition: logger.hpp:119
static bool & EnableConsole()
Definition: logger.hpp:171
static bool IsEnabled()
Definition: logger.hpp:181
void LogConfigure(const std::string &filename="")
Definition: logger.cpp:68
log4cplus::Logger & GetSmLogger()
Definition: logger.cpp:48
Definition: logger.hpp:115
Definition: logger.hpp:104
Definition: logger.hpp:108
const int LOG_TIMESTAMP_MAXLEN
Definition: logger.hpp:120
Definition: logger.hpp:113
Definition: logger.hpp:114
Definition: logger.hpp:102
const std::string SM_LOGGER_NAME
Definition: logger.hpp:75