32 #ifndef LSST_LOG_LOG_H
33 #define LSST_LOG_LOG_H
43 #include <log4cxx/logger.h>
44 #include <boost/format.hpp>
52 #define LOG_CONFIG(filename) lsst::log::Log::configure(filename)
66 #define LOG_CONFIG_PROP(string) lsst::log::Log::configure_prop(string)
73 #define LOG_DEFAULT_NAME() lsst::log::Log::getDefaultLoggerName()
82 #define LOG_GET(logger) lsst::log::Log::getLogger(logger)
99 #define LOG_PUSHCTX(name) lsst::log::Log::pushContext(name)
108 #define LOG_POPCTX() lsst::log::Log::popContext()
120 #define LOG_MDC(key, value) lsst::log::Log::MDC(key, value)
128 #define LOG_MDC_REMOVE(key) lsst::log::Log::MDCRemove(key)
137 #define LOG_SET_LVL(logger, level) \
138 lsst::log::Log::setLevel(logger, level)
148 #define LOG_GET_LVL(logger) \
149 lsst::log::Log::getLevel(logger)
160 #define LOG_CHECK_LVL(logger, level) \
161 lsst::log::Log::isEnabledFor(logger, level)
169 #define LOG_CHECK_TRACE() \
170 LOG4CXX_UNLIKELY(lsst::log::Log::defaultLogger->isTraceEnabled())
178 #define LOG_CHECK_DEBUG() \
179 LOG4CXX_UNLIKELY(lsst::log::Log::defaultLogger->isDebugEnabled())
187 #define LOG_CHECK_INFO() \
188 lsst::log::Log::defaultLogger->isInfoEnabled()
196 #define LOG_CHECK_WARN() \
197 lsst::log::Log::defaultLogger->isWarnEnabled()
205 #define LOG_CHECK_ERROR() \
206 lsst::log::Log::defaultLogger->isErrorEnabled()
214 #define LOG_CHECK_FATAL() \
215 lsst::log::Log::defaultLogger->isFatalEnabled()
226 #define LOGF(logger, level, message) \
227 do { if (lsst::log::Log::isEnabledFor(logger, level)) { \
228 lsst::log::detail::LogFormatter fmter_; \
229 lsst::log::Log::getLogger(logger)->forcedLog( \
230 log4cxx::Level::toLevel(level), (fmter_ % message).str(), \
231 LOG4CXX_LOCATION); } \
242 #define LOGF_TRACE(message) \
243 do { if (LOG4CXX_UNLIKELY(lsst::log::Log::defaultLogger->isTraceEnabled())) { \
244 lsst::log::detail::LogFormatter fmter_; \
245 lsst::log::Log::defaultLogger->forcedLog( \
246 log4cxx::Level::getTrace(), (fmter_ % message).str(), \
247 LOG4CXX_LOCATION); } \
258 #define LOGF_DEBUG(message) \
259 do { if (LOG4CXX_UNLIKELY(lsst::log::Log::defaultLogger->isDebugEnabled())) { \
260 lsst::log::detail::LogFormatter fmter_; \
261 lsst::log::Log::defaultLogger->forcedLog( \
262 log4cxx::Level::getDebug(), (fmter_ % message).str(), \
263 LOG4CXX_LOCATION); } \
274 #define LOGF_INFO(message) \
275 do { if (lsst::log::Log::defaultLogger->isInfoEnabled()) { \
276 lsst::log::detail::LogFormatter fmter_; \
277 lsst::log::Log::defaultLogger->forcedLog( \
278 log4cxx::Level::getInfo(), (fmter_ % message).str(), \
279 LOG4CXX_LOCATION); } \
290 #define LOGF_WARN(message) \
291 do { if (lsst::log::Log::defaultLogger->isWarnEnabled()) { \
292 lsst::log::detail::LogFormatter fmter_; \
293 lsst::log::Log::defaultLogger->forcedLog( \
294 log4cxx::Level::getWarn(), (fmter_ % message).str(), \
295 LOG4CXX_LOCATION); } \
306 #define LOGF_ERROR(message) \
307 do { if (lsst::log::Log::defaultLogger->isErrorEnabled()) { \
308 lsst::log::detail::LogFormatter fmter_; \
309 lsst::log::Log::defaultLogger->forcedLog( \
310 log4cxx::Level::getError(), (fmter_ % message).str(), \
311 LOG4CXX_LOCATION); } \
322 #define LOGF_FATAL(message) \
323 do { if (lsst::log::Log::defaultLogger->isFatalEnabled()) { \
324 lsst::log::detail::LogFormatter fmter_; \
325 lsst::log::Log::defaultLogger->forcedLog( \
326 log4cxx::Level::getFatal(), (fmter_ % message).str(), \
327 LOG4CXX_LOCATION); } \
339 #define LOG(logger, level, message...) \
340 do { if (lsst::log::Log::isEnabledFor(logger, level)) { \
341 lsst::log::Log::log(logger, log4cxx::Level::toLevel(level), \
342 __BASE_FILE__, __PRETTY_FUNCTION__, __LINE__, message); } \
353 #define LOG_TRACE(message...) \
354 do { if (LOG4CXX_UNLIKELY(lsst::log::Log::defaultLogger->isTraceEnabled())) { \
355 lsst::log::Log::log(lsst::log::Log::defaultLogger, \
356 log4cxx::Level::getTrace(), __BASE_FILE__, __PRETTY_FUNCTION__, \
357 __LINE__, message); } \
368 #define LOG_DEBUG(message...) \
369 do { if (LOG4CXX_UNLIKELY(lsst::log::Log::defaultLogger->isDebugEnabled())) { \
370 lsst::log::Log::log(lsst::log::Log::defaultLogger, \
371 log4cxx::Level::getDebug(), __BASE_FILE__, __PRETTY_FUNCTION__, \
372 __LINE__, message); } \
383 #define LOG_INFO(message...) \
384 do { if (lsst::log::Log::defaultLogger->isInfoEnabled()) { \
385 lsst::log::Log::log(lsst::log::Log::defaultLogger, \
386 log4cxx::Level::getInfo(), __BASE_FILE__, __PRETTY_FUNCTION__, \
387 __LINE__, message); } \
398 #define LOG_WARN(message...) \
399 do { if (lsst::log::Log::defaultLogger->isWarnEnabled()) { \
400 lsst::log::Log::log(lsst::log::Log::defaultLogger, \
401 log4cxx::Level::getWarn(), __BASE_FILE__, __PRETTY_FUNCTION__, \
402 __LINE__, message); } \
413 #define LOG_ERROR(message...) \
414 do { if (lsst::log::Log::defaultLogger->isErrorEnabled()) { \
415 lsst::log::Log::log(lsst::log::Log::defaultLogger, \
416 log4cxx::Level::getError(), __BASE_FILE__, __PRETTY_FUNCTION__, \
417 __LINE__, message); } \
428 #define LOG_FATAL(message...) \
429 do { if (lsst::log::Log::defaultLogger->isFatalEnabled()) { \
430 lsst::log::Log::log(lsst::log::Log::defaultLogger, \
431 log4cxx::Level::getFatal(), __BASE_FILE__, __PRETTY_FUNCTION__, \
432 __LINE__, message); } \
435 #define LOG_LVL_TRACE static_cast<int>(log4cxx::Level::TRACE_INT)
436 #define LOG_LVL_DEBUG static_cast<int>(log4cxx::Level::DEBUG_INT)
437 #define LOG_LVL_INFO static_cast<int>(log4cxx::Level::INFO_INT)
438 #define LOG_LVL_WARN static_cast<int>(log4cxx::Level::WARN_INT)
439 #define LOG_LVL_ERROR static_cast<int>(log4cxx::Level::ERROR_INT)
440 #define LOG_LVL_FATAL static_cast<int>(log4cxx::Level::FATAL_INT)
442 #define LOG_LOGGER log4cxx::LoggerPtr
443 #define LOG_CTX lsst::log::LogContext
466 template <
typename T>
494 static void configure(std::string
const& filename);
497 static log4cxx::LoggerPtr
getLogger(log4cxx::LoggerPtr logger);
498 static log4cxx::LoggerPtr
getLogger(std::string
const& loggername);
501 static void MDC(std::string
const& key, std::string
const& value);
502 static void MDCRemove(std::string
const& key);
503 static void setLevel(log4cxx::LoggerPtr logger,
int level);
504 static void setLevel(std::string
const& loggername,
int level);
505 static int getLevel(log4cxx::LoggerPtr logger);
506 static int getLevel(std::string
const& loggername);
507 static bool isEnabledFor(log4cxx::LoggerPtr logger,
int level);
508 static bool isEnabledFor(std::string
const& loggername,
int level);
509 static void vlog(log4cxx::LoggerPtr logger, log4cxx::LevelPtr level,
510 std::string
const& filename, std::string
const& funcname,
511 unsigned int lineno,
char const* fmt, va_list
args);
512 static void log(std::string
const& loggername, log4cxx::LevelPtr level,
513 std::string
const& filename, std::string
const& funcname,
514 unsigned int lineno,
char const* fmt, ...);
515 static void log(log4cxx::LoggerPtr logger, log4cxx::LevelPtr level,
516 std::string
const& filename, std::string
const& funcname,
517 unsigned int lineno,
char const* fmt, ...);
546 #endif // LSST_LOG_LOG_H
static log4cxx::LoggerPtr defaultLogger
table::Key< std::string > name
static void configure(void)
static log4cxx::LoggerPtr getLogger(log4cxx::LoggerPtr logger)
static void pushContext(std::string const &name)
static std::string getDefaultLoggerName(void)
static void initLog(void)
static void vlog(log4cxx::LoggerPtr logger, log4cxx::LevelPtr level, std::string const &filename, std::string const &funcname, unsigned int lineno, char const *fmt, va_list args)
LogContext(std::string const &name)
static int getLevel(log4cxx::LoggerPtr logger)
static void MDCRemove(std::string const &key)
static void MDC(std::string const &key, std::string const &value)
static bool isEnabledFor(log4cxx::LoggerPtr logger, int level)
static void popContext(void)
static void configure_prop(std::string const &properties)
static void log(std::string const &loggername, log4cxx::LevelPtr level, std::string const &filename, std::string const &funcname, unsigned int lineno, char const *fmt,...)
static void setLevel(log4cxx::LoggerPtr logger, int level)