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()