22 #if KAA_LOG_LEVEL > KAA_LOG_LEVEL_NONE 
   26 #include <boost/format.hpp> 
   30 #define PATH_SEPARATOR '\\' 
   32 #define PATH_SEPARATOR '/' 
   35 #define __LOGFILE (strrchr(__FILE__, PATH_SEPARATOR) ? strrchr(__FILE__, PATH_SEPARATOR) + 1 : __FILE__) 
   41 #if KAA_LOG_LEVEL > KAA_LOG_LEVEL_NONE 
   42 void kaa_log_message(
const ILogger & logger, 
LogLevel level, 
const char *message, 
const char *file, 
size_t lineno);
 
   43 void kaa_log_message(
const ILogger & logger, 
LogLevel level, 
const std::string &message, 
const char *file, 
size_t lineno);
 
   44 void kaa_log_message(
const ILogger & logger, 
LogLevel level, 
const boost::format& message, 
const char *file, 
size_t lineno);
 
   48 #if KAA_LOG_LEVEL >= KAA_LOG_LEVEL_FINE_TRACE 
   49     #define KAA_LOG_FTRACE(message) kaa_log_message(LoggerFactory::getLogger(), LogLevel::TRACE,      (message), __LOGFILE, __LINE__); 
   51     #define KAA_LOG_FTRACE(message) 
   53 #if KAA_LOG_LEVEL >= KAA_LOG_LEVEL_TRACE 
   54     #define KAA_LOG_TRACE(message)  kaa_log_message(LoggerFactory::getLogger(), LogLevel::TRACE,      (message), __LOGFILE, __LINE__); 
   56     #define KAA_LOG_TRACE(message) 
   58 #if KAA_LOG_LEVEL >= KAA_LOG_LEVEL_DEBUG 
   59     #define KAA_LOG_DEBUG(message)  kaa_log_message(LoggerFactory::getLogger(), LogLevel::DEBUG,      (message), __LOGFILE, __LINE__); 
   61     #define KAA_LOG_DEBUG(message) 
   63 #if KAA_LOG_LEVEL >= KAA_LOG_LEVEL_INFO 
   64     #define KAA_LOG_INFO(message)   kaa_log_message(LoggerFactory::getLogger(), LogLevel::INFO,       (message), __LOGFILE, __LINE__); 
   66     #define KAA_LOG_INFO(message) 
   68 #if KAA_LOG_LEVEL >= KAA_LOG_LEVEL_WARNING 
   69     #define KAA_LOG_WARN(message)   kaa_log_message(LoggerFactory::getLogger(), LogLevel::WARNING,    (message), __LOGFILE, __LINE__); 
   71     #define KAA_LOG_WARN(message) 
   73 #if KAA_LOG_LEVEL >= KAA_LOG_LEVEL_ERROR 
   74     #define KAA_LOG_ERROR(message)  kaa_log_message(LoggerFactory::getLogger(), LogLevel::ERROR,      (message), __LOGFILE, __LINE__); 
   76     #define KAA_LOG_ERROR(message) 
   78 #if KAA_LOG_LEVEL >= KAA_LOG_LEVEL_FATAL 
   79     #define KAA_LOG_FATAL(message)  kaa_log_message(LoggerFactory::getLogger(), LogLevel::FATAL,      (message), __LOGFILE, __LINE__); 
   81     #define KAA_LOG_FATAL(message) 
   84 #if defined(KAA_THREADSAFE) && defined(KAA_MUTEX_LOGGING_ENABLED) && KAA_LOG_LEVEL > 4 
   85 template <
typename LockType, 
typename MutableObject>
 
   86 class MutexScopedLockLogger {
 
   88     MutexScopedLockLogger(
const char *name, MutableObject& m, 
const char *file, 
size_t line)
 
   92         , lock_(m, boost::defer_lock_t()) {
 
   93         kaa_log_message(LoggerFactory::getLogger(), 
LogLevel::DEBUG, (boost::format(
"Locking %1% mutex") % name_).str(), file_, line_);
 
   95         kaa_log_message(LoggerFactory::getLogger(), 
LogLevel::DEBUG, (boost::format(
"Locked %1% mutex") % name_).str(), file_, line_);
 
   97     ~MutexScopedLockLogger() {
 
   98         kaa_log_message(LoggerFactory::getLogger(), 
LogLevel::DEBUG, (boost::format(
"Unlocking %1% mutex") % name_).str(), file_, line_);
 
  107     #define KAA_MUTEX_LOCKING(mutex_name)   KAA_LOG_DEBUG("Locking " mutex_name " mutex"); 
  108     #define KAA_MUTEX_LOCKED(mutex_name)    KAA_LOG_DEBUG("Locked " mutex_name " mutex"); 
  109     #define KAA_MUTEX_UNLOCKING(mutex_name) KAA_LOG_DEBUG("Unlocking " mutex_name " mutex"); 
  110     #define KAA_MUTEX_UNLOCKED(mutex_name)  KAA_LOG_DEBUG("Unlocked " mutex_name " mutex"); 
  111     #define KAA_MUTEX_LOG_AND_LOCK(LockType, MutableType, MutableObject) MutexScopedLockLogger<LockType, MutableType> MutableObject##Lock(#MutableObject, MutableObject, __LOGFILE, __LINE__) 
  113     #define KAA_MUTEX_LOCKING(mutex_name) 
  114     #define KAA_MUTEX_LOCKED(mutex_name) 
  115     #define KAA_MUTEX_UNLOCKING(mutex_name) 
  116     #define KAA_MUTEX_UNLOCKED(mutex_name) 
  117     #define KAA_MUTEX_LOG_AND_LOCK(LockType, MutableType, MutableObject) LockType MutableObject##Lock(MutableObject)