32 #ifndef LSST_LOG_LOG_H
33 #define LSST_LOG_LOG_H
44 #include <log4cxx/logger.h>
45 #include <boost/format.hpp>
53 #define LOG_CONFIG(filename) lsst::log::Log::configure(filename)
67 #define LOG_CONFIG_PROP(string) lsst::log::Log::configure_prop(string)
74 #define LOG_DEFAULT_NAME() lsst::log::Log::getDefaultLoggerName()
83 #define LOG_GET(logger) lsst::log::Log::getLogger(logger)
100 #define LOG_PUSHCTX(name) lsst::log::Log::pushContext(name)
109 #define LOG_POPCTX() lsst::log::Log::popContext()
121 #define LOG_MDC(key, value) lsst::log::Log::MDC(key, value)
129 #define LOG_MDC_REMOVE(key) lsst::log::Log::MDCRemove(key)
151 #define LOG_MDC_INIT(func) lsst::log::Log::MDCRegisterInit(std::function<void()>(func))
160 #define LOG_SET_LVL(logger, level) \
161 lsst::log::Log::getLogger(logger).setLevel(level)
171 #define LOG_GET_LVL(logger) \
172 lsst::log::Log::getLogger(logger).getLevel()
183 #define LOG_CHECK_LVL(logger, level) \
184 lsst::log::Log::getLogger(logger).isEnabledFor(level)
192 #define LOG_CHECK_TRACE() \
193 LOG4CXX_UNLIKELY(lsst::log::Log::getDefaultLogger().isTraceEnabled())
201 #define LOG_CHECK_DEBUG() \
202 LOG4CXX_UNLIKELY(lsst::log::Log::getDefaultLogger().isDebugEnabled())
210 #define LOG_CHECK_INFO() \
211 lsst::log::Log::getDefaultLogger().isInfoEnabled()
219 #define LOG_CHECK_WARN() \
220 lsst::log::Log::getDefaultLogger().isWarnEnabled()
228 #define LOG_CHECK_ERROR() \
229 lsst::log::Log::getDefaultLogger().isErrorEnabled()
237 #define LOG_CHECK_FATAL() \
238 lsst::log::Log::getDefaultLogger().isFatalEnabled()
249 #define LOG(logger, level, message...) \
251 lsst::log::Log log(lsst::log::Log::getLogger(logger)); \
252 if (log.isEnabledFor(level)) { \
253 log.log(log4cxx::Level::toLevel(level), LOG4CXX_LOCATION, message); } \
264 #define LOG_TRACE(message...) \
266 lsst::log::Log log; \
267 if (LOG4CXX_UNLIKELY(log.isTraceEnabled())) { \
268 log.log(log4cxx::Level::getTrace(), LOG4CXX_LOCATION, message); } \
279 #define LOG_DEBUG(message...) \
281 lsst::log::Log log; \
282 if (LOG4CXX_UNLIKELY(log.isDebugEnabled())) { \
283 log.log(log4cxx::Level::getDebug(), LOG4CXX_LOCATION, message); } \
294 #define LOG_INFO(message...) \
296 lsst::log::Log log; \
297 if (log.isInfoEnabled()) { \
298 log.log(log4cxx::Level::getInfo(), LOG4CXX_LOCATION, message); } \
309 #define LOG_WARN(message...) \
311 lsst::log::Log log; \
312 if (log.isWarnEnabled()) { \
313 log.log(log4cxx::Level::getWarn(), LOG4CXX_LOCATION, message); } \
324 #define LOG_ERROR(message...) \
326 lsst::log::Log log; \
327 if (log.isErrorEnabled()) { \
328 log.log(log4cxx::Level::getError(), LOG4CXX_LOCATION, message); } \
339 #define LOG_FATAL(message...) \
341 lsst::log::Log log; \
342 if (log.isFatalEnabled()) { \
343 log.log(log4cxx::Level::getFatal(), LOG4CXX_LOCATION, message); } \
348 #define LOG_MESSAGE_VIA_STREAM_(logger, level, message) \
349 std::ostringstream stream_; \
350 stream_ << message; \
351 logger.logMsg(level, LOG4CXX_LOCATION, stream_.str())
367 #define LOGS(logger, level, message) \
369 lsst::log::Log log(lsst::log::Log::getLogger(logger)); \
370 if (log.isEnabledFor(level)) { \
371 LOG_MESSAGE_VIA_STREAM_(log, log4cxx::Level::toLevel(level), message); \
386 #define LOGS_TRACE(message) \
388 lsst::log::Log log; \
389 if (LOG4CXX_UNLIKELY(log.isTraceEnabled())) { \
390 LOG_MESSAGE_VIA_STREAM_(log, log4cxx::Level::getTrace(), message); \
405 #define LOGS_DEBUG(message) \
407 lsst::log::Log log; \
408 if (LOG4CXX_UNLIKELY(log.isDebugEnabled())) { \
409 LOG_MESSAGE_VIA_STREAM_(log, log4cxx::Level::getDebug(), message); \
424 #define LOGS_INFO(message) \
426 lsst::log::Log log; \
427 if (log.isInfoEnabled()) { \
428 LOG_MESSAGE_VIA_STREAM_(log, log4cxx::Level::getInfo(), message); \
443 #define LOGS_WARN(message) \
445 lsst::log::Log log; \
446 if (log.isWarnEnabled()) { \
447 LOG_MESSAGE_VIA_STREAM_(log, log4cxx::Level::getWarn(), message); \
462 #define LOGS_ERROR(message) \
464 lsst::log::Log log; \
465 if (log.isErrorEnabled()) { \
466 LOG_MESSAGE_VIA_STREAM_(log, log4cxx::Level::getError(), message); \
481 #define LOGS_FATAL(message) \
483 lsst::log::Log log; \
484 if (log.isFatalEnabled()) { \
485 LOG_MESSAGE_VIA_STREAM_(log, log4cxx::Level::getFatal(), message); \
497 #define LOGL_TRACE(logger, message...) \
499 lsst::log::Log log(lsst::log::Log::getLogger(logger)); \
500 if (LOG4CXX_UNLIKELY(log.isTraceEnabled())) { \
501 log.log(log4cxx::Level::getTrace(), LOG4CXX_LOCATION, message);\
513 #define LOGL_DEBUG(logger, message...) \
515 lsst::log::Log log(lsst::log::Log::getLogger(logger)); \
516 if (LOG4CXX_UNLIKELY(log.isDebugEnabled())) { \
517 log.log(log4cxx::Level::getDebug(), LOG4CXX_LOCATION, message); \
529 #define LOGL_INFO(logger, message...) \
531 lsst::log::Log log(lsst::log::Log::getLogger(logger)); \
532 if (log.isInfoEnabled()) { \
533 log.log(log4cxx::Level::getInfo(), LOG4CXX_LOCATION, message); \
545 #define LOGL_WARN(logger, message...) \
547 lsst::log::Log log(lsst::log::Log::getLogger(logger)); \
548 if (log.isWarnEnabled()) { \
549 log.log(log4cxx::Level::getWarn(), LOG4CXX_LOCATION, message); \
561 #define LOGL_ERROR(logger, message...) \
563 lsst::log::Log log(lsst::log::Log::getLogger(logger)); \
564 if (log.isErrorEnabled()) { \
565 log.log(log4cxx::Level::getError(), LOG4CXX_LOCATION, message); \
577 #define LOGL_FATAL(logger, message...) \
579 lsst::log::Log log(lsst::log::Log::getLogger(logger)); \
580 if (log.isFatalEnabled()) { \
581 log.log(log4cxx::Level::getFatal(), LOG4CXX_LOCATION, message); \
597 #define LOGLS_TRACE(logger, message) \
599 lsst::log::Log log(lsst::log::Log::getLogger(logger)); \
600 if (LOG4CXX_UNLIKELY(log.isTraceEnabled())) { \
601 LOG_MESSAGE_VIA_STREAM_(log, log4cxx::Level::getTrace(), message); \
617 #define LOGLS_DEBUG(logger, message) \
619 lsst::log::Log log(lsst::log::Log::getLogger(logger)); \
620 if (LOG4CXX_UNLIKELY(log.isDebugEnabled())) { \
621 LOG_MESSAGE_VIA_STREAM_(log, log4cxx::Level::getDebug(), message); \
637 #define LOGLS_INFO(logger, message) \
639 lsst::log::Log log(lsst::log::Log::getLogger(logger)); \
640 if (log.isInfoEnabled()) { \
641 LOG_MESSAGE_VIA_STREAM_(log, log4cxx::Level::getInfo(), message); \
657 #define LOGLS_WARN(logger, message) \
659 lsst::log::Log log(lsst::log::Log::getLogger(logger)); \
660 if (log.isWarnEnabled()) { \
661 LOG_MESSAGE_VIA_STREAM_(log, log4cxx::Level::getWarn(), message); \
677 #define LOGLS_ERROR(logger, message) \
679 lsst::log::Log log(lsst::log::Log::getLogger(logger)); \
680 if (log.isErrorEnabled()) { \
681 LOG_MESSAGE_VIA_STREAM_(log, log4cxx::Level::getError(), message); \
697 #define LOGLS_FATAL(logger, message) \
699 lsst::log::Log log(lsst::log::Log::getLogger(logger)); \
700 if (log.isFatalEnabled()) { \
701 LOG_MESSAGE_VIA_STREAM_(log, log4cxx::Level::getFatal(), message); \
705 #define LOG_LVL_TRACE static_cast<int>(log4cxx::Level::TRACE_INT)
706 #define LOG_LVL_DEBUG static_cast<int>(log4cxx::Level::DEBUG_INT)
707 #define LOG_LVL_INFO static_cast<int>(log4cxx::Level::INFO_INT)
708 #define LOG_LVL_WARN static_cast<int>(log4cxx::Level::WARN_INT)
709 #define LOG_LVL_ERROR static_cast<int>(log4cxx::Level::ERROR_INT)
710 #define LOG_LVL_FATAL static_cast<int>(log4cxx::Level::FATAL_INT)
712 #define LOG_LOGGER lsst::log::Log
713 #define LOG_CTX lsst::log::LogContext
732 Log() : _logger(_defaultLogger()) { }
769 static void configure(std::string
const& filename);
772 static Log getLogger(
Log const& logger) {
return logger; }
773 static Log getLogger(std::string
const& loggername);
777 static void MDC(std::string
const& key, std::string
const& value);
778 static void MDCRemove(std::string
const& key);
779 static int MDCRegisterInit(std::function<
void()>
function);
781 void log(log4cxx::LevelPtr level,
782 log4cxx::spi::LocationInfo
const& location,
783 char const* fmt, ...);
784 void logMsg(log4cxx::LevelPtr level,
785 log4cxx::spi::LocationInfo
const& location,
786 std::string
const& msg);
795 static log4cxx::LoggerPtr
const& _defaultLogger(log4cxx::LoggerPtr
const& newDefault=log4cxx::LoggerPtr());
802 Log(log4cxx::LoggerPtr
const& logger) : Log() { _logger = logger; }
804 log4cxx::LoggerPtr _logger;
842 #endif // LSST_LOG_LOG_H
bool isErrorEnabled() const
Definition: Log.h:741
void logMsg(log4cxx::LevelPtr level, log4cxx::spi::LocationInfo const &location, std::string const &msg)
Definition: Log.cc:394
bool isEnabledFor(int level) const
Definition: Log.cc:369
bool isTraceEnabled() const
Definition: Log.h:753
static void configure()
Definition: Log.cc:173
bool isInfoEnabled() const
Definition: Log.h:749
static Log getDefaultLogger()
Return default logger instance, same as default constructor.
Definition: Log.h:765
int getLevel() const
Definition: Log.cc:354
static void MDC(std::string const &key, std::string const &value)
Definition: Log.cc:312
void setLevel(int level)
Definition: Log.cc:347
void log(log4cxx::LevelPtr level, log4cxx::spi::LocationInfo const &location, char const *fmt,...)
Definition: Log.cc:380
static void pushContext(std::string const &name)
Definition: Log.cc:266
static void popContext()
Definition: Log.cc:293
bool isFatalEnabled() const
Definition: Log.h:745
LogContext(std::string const &name)
Definition: Log.h:817
std::string getName() const
Definition: Log.cc:238
static std::string getDefaultLoggerName()
Definition: Log.cc:231
static void configure_prop(std::string const &properties)
Definition: Log.cc:213
bool isDebugEnabled() const
Definition: Log.h:737
static void MDCRemove(std::string const &key)
Definition: Log.cc:324
bool isWarnEnabled() const
Definition: Log.h:757