23 #include <boost/format.hpp>
24 #include <boost/thread/mutex.hpp>
25 #include <boost/thread/lock_options.hpp>
29 #define PATH_SEPARATOR '\\'
31 #define PATH_SEPARATOR '/'
34 #define __LOGFILE (strrchr(__FILE__, PATH_SEPARATOR) ? strrchr(__FILE__, PATH_SEPARATOR) + 1 : __FILE__)
38 void kaa_log(
const ILogger & logger,
LogLevel level,
const char *message,
const char *file,
size_t lineno);
39 void kaa_log(
const ILogger & logger,
LogLevel level,
const std::string &message,
const char *file,
size_t lineno);
40 void kaa_log(
const ILogger & logger,
LogLevel level, boost::format message,
const char *file,
size_t lineno);
42 #define KAA_LOG_FTRACE(message) kaa_log(LoggerFactory::getLogger(), LogLevel::FINE_TRACE, (message), __LOGFILE, __LINE__);
43 #define KAA_LOG_DEBUG(message) kaa_log(LoggerFactory::getLogger(), LogLevel::DEBUG, (message), __LOGFILE, __LINE__);
44 #define KAA_LOG_TRACE(message) kaa_log(LoggerFactory::getLogger(), LogLevel::TRACE, (message), __LOGFILE, __LINE__);
45 #define KAA_LOG_INFO(message) kaa_log(LoggerFactory::getLogger(), LogLevel::INFO, (message), __LOGFILE, __LINE__);
46 #define KAA_LOG_WARN(message) kaa_log(LoggerFactory::getLogger(), LogLevel::WARNING, (message), __LOGFILE, __LINE__);
47 #define KAA_LOG_ERROR(message) kaa_log(LoggerFactory::getLogger(), LogLevel::ERROR, (message), __LOGFILE, __LINE__);
48 #define KAA_LOG_FATAL(message) kaa_log(LoggerFactory::getLogger(), LogLevel::FATAL, (message), __LOGFILE, __LINE__);
50 #ifdef KAA_MUTEX_LOGGING_ENABLED
51 template <
typename LockType,
typename MutableObject>
52 class MutexScopedLockLogger {
54 MutexScopedLockLogger(
const char *name, MutableObject& m,
const char *file,
size_t line)
58 , lock_(m, boost::defer_lock_t()) {
63 ~MutexScopedLockLogger() {
73 #define KAA_MUTEX_LOCKING(mutex_name) KAA_LOG_DEBUG("Locking " mutex_name " mutex");
74 #define KAA_MUTEX_LOCKED(mutex_name) KAA_LOG_DEBUG("Locked " mutex_name " mutex");
75 #define KAA_MUTEX_UNLOCKING(mutex_name) KAA_LOG_DEBUG("Unlocking " mutex_name " mutex");
76 #define KAA_MUTEX_UNLOCKED(mutex_name) KAA_LOG_DEBUG("Unlocked " mutex_name " mutex");
77 #define KAA_MUTEX_LOG_AND_LOCK(LockType, MutableType, MutableObject) MutexScopedLockLogger<LockType, MutableType> MutableObject##Lock(#MutableObject, MutableObject, __LOGFILE, __LINE__)
79 #define KAA_MUTEX_LOCKING(mutex_name)
80 #define KAA_MUTEX_LOCKED(mutex_name)
81 #define KAA_MUTEX_UNLOCKING(mutex_name)
82 #define KAA_MUTEX_UNLOCKED(mutex_name)
83 #define KAA_MUTEX_LOG_AND_LOCK(LockType, MutableType, MutableObject) LockType MutableObject##Lock(MutableObject)
void kaa_log(const ILogger &logger, LogLevel level, const char *message, const char *file, size_t lineno)
static const ILogger & getLogger()