30 #ifndef Pt_System_Logger_h 
   31 #define Pt_System_Logger_h 
   33 #include <Pt/System/Api.h> 
   34 #include <Pt/System/LogLevel.h> 
   35 #include <Pt/System/LogTarget.h> 
   36 #include <Pt/System/LogRecord.h> 
   37 #include <Pt/NonCopyable.h> 
   97     friend class LogManager;
 
  106         Logger(
const std::string& name);
 
  128         static void init(
const std::string& file);
 
  131         static void initTargets()
 
  132         { init(
"log.properties"); }
 
  144         static void init(
const Settings& settings);
 
  173         static void setPattern(
const std::string& pattern);
 
  193         static void setChannel(
const std::string& target, 
const std::string& url)
 
  200             return level <= _target->logLevel();
 
  207             return record.
logLevel() <= _target->logLevel();
 
  218             if( always || this->enabled( record.
logLevel() ) )
 
  220                 _target->log( record );
 
  235         LogTarget& initLogger(
const std::string& name);
 
  310             _logger->
log( _record, _enabled ); 
 
  319         operator bool()
 const 
  327         template <
typename T>
 
  382 struct LoggerStaticInit
 
  384     template <
typename F>
 
  385     LoggerStaticInit(F initfunc)
 
  394 #define PT_LOGGER_BEGIN_IMPL(logger, level)         \ 
  395     if( ! logger.enabled( Pt::System::level ) )     \ 
  397     else Pt::System::LogMessage(static_cast<Pt::System::Logger&>(logger), Pt::System::level, true) 
  400     #define PT_LOG_INIT(file) 
  401     #define PT_LOG_DEFINE_IMPL(instance, category) 
  402     #define PT_LOG_TO_IMPL(instance, level, message) 
  403     #define PT_LOGGER_LOG_IMPL(logger, level, expr) 
  405     #define PT_LOG_INIT(settings) Pt::System::Logger::init(settings); 
  409     #define PT_LOG_DEFINE_IMPL(instance, category)                \ 
  410     inline static Pt::System::Logger& instance()                  \ 
  412         static Pt::System::Logger instance##_instance(category);  \ 
  413         return instance##_instance;                               \ 
  415     static const Pt::System::LoggerStaticInit instance##_static_init( &instance ); 
  418     #define PT_LOG_TO_IMPL(instance, level, expr) PT_LOGGER_LOG_IMPL(instance(), level, expr) 
  421     #define PT_LOGGER_LOG_IMPL(logger, level, expr) PT_LOGGER_BEGIN_IMPL(logger, level) << expr << Pt::System::endlog 
  424 #define PT_LOG_DEFINE(category) PT_LOG_DEFINE_IMPL(static_logger, category) 
  425 #define PT_LOG_FATAL(expr) PT_LOG_TO_IMPL(static_logger, Fatal, expr) 
  426 #define PT_LOG_ERROR(expr) PT_LOG_TO_IMPL(static_logger, Error, expr) 
  427 #define PT_LOG_WARN(expr)  PT_LOG_TO_IMPL(static_logger, Warn, expr) 
  428 #define PT_LOG_INFO(expr)  PT_LOG_TO_IMPL(static_logger, Info, expr) 
  429 #define PT_LOG_DEBUG(expr) PT_LOG_TO_IMPL(static_logger, Debug, expr) 
  430 #define PT_LOG_TRACE(expr) PT_LOG_TO_IMPL(static_logger, Trace, expr) 
  432 #define PT_LOG_DEFINE_INSTANCE(instance, category) PT_LOG_DEFINE_IMPL(instance, category) 
  433 #define PT_LOG_FATAL_TO(instance, expr) PT_LOG_TO_IMPL(instance, Fatal, expr) 
  434 #define PT_LOG_ERROR_TO(instance, expr) PT_LOG_TO_IMPL(instance, Error, expr) 
  435 #define PT_LOG_WARN_TO(instance, expr)  PT_LOG_TO_IMPL(instance, Warn, expr) 
  436 #define PT_LOG_INFO_TO(instance, expr)  PT_LOG_TO_IMPL(instance, Info, expr) 
  437 #define PT_LOG_DEBUG_TO(instance, expr) PT_LOG_TO_IMPL(instance, Debug, expr) 
  438 #define PT_LOG_TRACE_TO(instance, expr) PT_LOG_TO_IMPL(instance, Trace, expr) 
  440 #define PT_LOGGER_LOG_FATAL(logger, expr) PT_LOGGER_LOG_IMPL(logger, Fatal, expr) 
  441 #define PT_LOGGER_LOG_ERROR(logger, expr) PT_LOGGER_LOG_IMPL(logger, Error, expr) 
  442 #define PT_LOGGER_LOG_WARN(logger, expr)  PT_LOGGER_LOG_IMPL(logger, Warn, expr) 
  443 #define PT_LOGGER_LOG_INFO(logger, expr)  PT_LOGGER_LOG_IMPL(logger, Info, expr) 
  444 #define PT_LOGGER_LOG_DEBUG(logger, expr) PT_LOGGER_LOG_IMPL(logger, Debug, expr) 
  445 #define PT_LOGGER_LOG_TRACE(logger, expr) PT_LOGGER_LOG_IMPL(logger, Trace, expr) 
  447 #define PT_LOGGER_BEGIN_FATAL(logger) PT_LOGGER_BEGIN_IMPL(logger, Fatal) 
  448 #define PT_LOGGER_BEGIN_ERROR(logger) PT_LOGGER_BEGIN_IMPL(logger, Error) 
  449 #define PT_LOGGER_BEGIN_WARN(logger) PT_LOGGER_BEGIN_IMPL(logger, Warn) 
  450 #define PT_LOGGER_BEGIN_INFO(logger) PT_LOGGER_BEGIN_IMPL(logger, Info) 
  451 #define PT_LOGGER_BEGIN_DEBUG(logger) PT_LOGGER_BEGIN_IMPL(logger, Debug) 
  452 #define PT_LOGGER_BEGIN_TRACE(logger) PT_LOGGER_BEGIN_IMPL(logger, Trace) 
  454 #endif // Pt_System_Logger_h 
Log records can be added to a log. 
Definition: LogRecord.h:90
 
Protects derived classes from being copied. 
Definition: NonCopyable.h:54
 
bool enabled(const LogRecord &record) const 
Returns true if the log level is enabled for the target. 
Definition: Logger.h:205
 
const LogRecord & record() const 
Returns the underlying log record. 
Definition: Logger.h:304
 
LogLevel
Severity of the log-message. 
Definition: LogLevel.h:41
 
LogLevel logLevel() const 
Returns the severity level. 
Definition: LogRecord.h:115
 
static void setLogLevel(const std::string &target, LogLevel level)
Sets the log-level of the target and its children. 
Definition: Logger.h:183
 
static LogTarget & get(const std::string &name)
Get a target from the logging manager. 
 
void setChannel(const std::string &url)
Sets the channel to be used by this target. 
 
bool operator!() const 
Returns true if the record's log level is disabled for the target. 
Definition: Logger.h:323
 
LogMessage & endlog(LogMessage &msg)
Manipulator to end and send a log-message. 
Definition: Logger.h:376
 
static void setChannel(const std::string &target, const std::string &url)
Sets the channel to be used by the target and its children. 
Definition: Logger.h:193
 
Target of log-messages. 
Definition: LogTarget.h:62
 
LogMessage & operator<<(LogMessage &(*pf)(LogMessage &))
Applies a manipulator to the log message. 
Definition: Logger.h:356
 
void setLogLevel(LogLevel level)
Sets the log-level of the target and its children. 
 
LogMessage & operator<<(std::ostream &(*op)(std::ostream &))
Applies op to the log record. 
Definition: Logger.h:335
 
LogMessage(Logger &logger, const LogLevel &level, bool always=false)
Constructs a log message for a logger. 
Definition: Logger.h:293
 
bool enabled(LogLevel level) const 
Returns true if the log level is enabled for the target. 
Definition: Logger.h:198
 
LogMessage & operator<<(const T &value)
Appends value to the log record. 
Definition: Logger.h:328
 
LogMessage & operator<<(std::ios_base &(*op)(std::ios_base &))
Applies op to the log record. 
Definition: Logger.h:349
 
~LogMessage()
Destructor. 
Definition: Logger.h:300
 
void log(const LogRecord &record, bool always=false)
Write a log record to the target. 
Definition: Logger.h:216
 
bool enabled() const 
Returns true if the record's log level is enabled for the target. 
Definition: Logger.h:315
 
Writes log records to a target. 
Definition: Logger.h:95
 
void log()
Sends the message's log record to the logger. 
Definition: Logger.h:308
 
Store application settings. 
Definition: Settings.h:172
 
LogMessage & operator<<(std::ios &(*op)(std::ios &))
Applies op to the log record. 
Definition: Logger.h:342
 
Logs records with a logger. 
Definition: Logger.h:280