blocxx
BLOCXX_NAMESPACE::Logger Class Reference

Logging interface. More...

#include <Logger.hpp>

Inheritance diagram for BLOCXX_NAMESPACE::Logger:
BLOCXX_NAMESPACE::IntrusiveCountableBase BLOCXX_NAMESPACE::AppenderLogger BLOCXX_NAMESPACE::CerrLogger BLOCXX_NAMESPACE::NullLogger

Public Types

enum  ELoggerErrorCodes { E_UNKNOWN_LOG_APPENDER_TYPE , E_INVALID_MAX_FILE_SIZE , E_INVALID_MAX_BACKUP_INDEX }
 

Public Member Functions

 Logger (const String &defaultComponent=STR_DEFAULT_COMPONENT, const LogAppenderRef &appender=LogAppenderRef())
 
 Logger (const String &defaultComponent, const ELogLevel logLevel)
 
 Logger (const Logger &)
 
Loggeroperator= (const Logger &)
 
void swap (Logger &x)
 
virtual ~Logger ()
 
virtual LoggerRef clone () const BLOCXX_DEPRECATED
 
void logFatalError (const String &message, const char *filename=0, int fileline=-1, const char *methodname=0) const
 Log message with a fatal error category and the default component.
 
void logError (const String &message, const char *filename=0, int fileline=-1, const char *methodname=0) const
 If getLogLevel() >= E_ERROR_LEVEL, Log message with an error category and the default component.
 
void logWarning (const String &message, const char *filename=0, int fileline=-1, const char *methodname=0) const
 If getLogLevel() >= E_WARNING_LEVEL, Log info.
 
void logInfo (const String &message, const char *filename=0, int fileline=-1, const char *methodname=0) const
 If getLogLevel() >= E_INFO_LEVEL, Log info.
 
void logDebug (const String &message, const char *filename=0, int fileline=-1, const char *methodname=0) const
 If getLogLevel() >= E_DEBUG_LEVEL, Log debug info.
 
void logDebug2 (const String &message, const char *filename=0, int fileline=-1, const char *methodname=0) const
 If getLogLevel() >= E_DEBUG2_LEVEL, Log debug info.
 
void logDebug3 (const String &message, const char *filename=0, int fileline=-1, const char *methodname=0) const
 If getLogLevel() >= E_DEBUG3_LEVEL, Log debug info.
 
void logMessage (const String &component, const String &category, const String &message) const
 Log a message using the specified component and category The current log level is ignored.
 
void logMessage (const String &component, const String &category, const String &message, const char *filename, int fileline, const char *methodname) const
 Log a message using the specified component and category The current log level is ignored.
 
void logMessage (const String &category, const String &message) const
 Log a message using the default component and specified category.
 
void logMessage (const String &category, const String &message, const char *filename, int fileline, const char *methodname) const
 Log a message using the default component and specified category.
 
void logMessage (const LogMessage &message) const
 Log a message.
 
void setDefaultComponent (const String &component)
 Sets the default component.
 
String getDefaultComponent () const
 Gets the default component.
 
ELogLevel getLogLevel () const
 
void setLogLevel (ELogLevel logLevel)
 Set the log level.
 
void setLogLevel (const String &logLevel)
 Set the log level.
 
bool categoryIsEnabled (const String &category) const
 Determine if the log category is enabled.
 
bool levelIsEnabled (const ELogLevel level) const
 Check if the logger is enabled for given level.
 
bool componentAndCategoryAreEnabled (const String &component, const String &category) const
 Determine if the component and category are both enabled.
 

Static Public Member Functions

static ELogLevel stringToLogLevel (const String &logLevel)
 Convert a log level string to an enum value.
 
static String logLevelToString (ELogLevel logLevel)
 Convert a log level enum to a string.
 
static const LoggerasLogger (const Logger &lgr)
 Utility functions for backward compatibility with LoggerRef and the BLOCXX_LOG macros.
 
static const LoggerasLogger (const LoggerRef &lgr)
 

Static Public Attributes

static const GlobalString STR_NONE_CATEGORY = { "NONE", 0, {0, PTHREAD_MUTEX_INITIALIZER} }
 
static const GlobalString STR_FATAL_CATEGORY = { "FATAL", 0, {0, PTHREAD_MUTEX_INITIALIZER} }
 
static const GlobalString STR_ERROR_CATEGORY = { "ERROR", 0, {0, PTHREAD_MUTEX_INITIALIZER} }
 
static const GlobalString STR_WARNING_CATEGORY = { "WARNING", 0, {0, PTHREAD_MUTEX_INITIALIZER} }
 
static const GlobalString STR_INFO_CATEGORY = { "INFO", 0, {0, PTHREAD_MUTEX_INITIALIZER} }
 
static const GlobalString STR_DEBUG_CATEGORY = { "DEBUG", 0, {0, PTHREAD_MUTEX_INITIALIZER} }
 
static const GlobalString STR_DEBUG2_CATEGORY = { "DEBUG2", 0, {0, PTHREAD_MUTEX_INITIALIZER} }
 
static const GlobalString STR_DEBUG3_CATEGORY = { "DEBUG3", 0, {0, PTHREAD_MUTEX_INITIALIZER} }
 
static const GlobalString STR_ALL_CATEGORY = { "ALL", 0, {0, PTHREAD_MUTEX_INITIALIZER} }
 
static const GlobalString STR_DEFAULT_COMPONENT = { "none", 0, {0, PTHREAD_MUTEX_INITIALIZER} }
 

Protected Attributes

String m_defaultComponent
 
LogAppenderRef m_appender
 
ELogLevel m_logLevel
 

Private Member Functions

void processLogMessage (const LogMessage &message) const
 

Additional Inherited Members

- Protected Member Functions inherited from BLOCXX_NAMESPACE::IntrusiveCountableBase
 IntrusiveCountableBase ()
 
 IntrusiveCountableBase (const IntrusiveCountableBase &)
 
IntrusiveCountableBaseoperator= (const IntrusiveCountableBase &)
 
virtual ~IntrusiveCountableBase ()
 

Detailed Description

Logging interface.

Used to output log messages. A Logger has a component, a log level and a LogAppenderRef. The component will be used for all log messages generated, unless another component is explicitly specified in a call to logMessage(). The AppenderRef is the target for log messages. The global LogAppenderRef will be retrieved via LogAppender::getCurrentLogAppender() if one is not passed to the constructor. An application may call LogAppender::setDefaultLogAppender() to set the global LogAppenderRef. The log level will be obtained from the appender by calling m_appender->getLogLevel().

Invariants:

  • m_defaultComponent != ""
  • m_appender is not NULL.

Responsibilities:

  • Report log level.
  • Provide interface to log messages.
  • Filter messages based on log level.

Collaborators:

  • Any class which needs to log messages.

Thread safety: read/write, except for setDefaultComponent() and setLogLevel() which should only be called during initialization phase.

Copy semantics: Value

Exception safety: Strong

Definition at line 86 of file Logger.hpp.

Member Enumeration Documentation

◆ ELoggerErrorCodes

Enumerator
E_UNKNOWN_LOG_APPENDER_TYPE 
E_INVALID_MAX_FILE_SIZE 
E_INVALID_MAX_BACKUP_INDEX 

Definition at line 101 of file Logger.hpp.

Constructor & Destructor Documentation

◆ Logger() [1/3]

BLOCXX_NAMESPACE::Logger::Logger ( const String & defaultComponent = STR_DEFAULT_COMPONENT,
const LogAppenderRef & appender = LogAppenderRef() )
Parameters
defaultComponentThe component used for log messages (can be overridden by logMessage())
appenderThe Appender which will receive log messages. If NULL, the result of LogAppender::getCurrentLogAppender() will be used.

Definition at line 66 of file Logger.cpp.

References BLOCXX_ASSERT, BLOCXX_NAMESPACE::String::length(), and m_defaultComponent.

◆ Logger() [2/3]

BLOCXX_NAMESPACE::Logger::Logger ( const String & defaultComponent,
const ELogLevel logLevel )
Parameters
defaultComponentThe component used for log messages (can be overridden my logMessage())
logLevelThe log level. All lower level log messages will be ignored.

Definition at line 75 of file Logger.cpp.

References BLOCXX_ASSERT, BLOCXX_NAMESPACE::String::length(), and m_defaultComponent.

◆ Logger() [3/3]

BLOCXX_NAMESPACE::Logger::Logger ( const Logger & x)

Definition at line 84 of file Logger.cpp.

◆ ~Logger()

BLOCXX_NAMESPACE::Logger::~Logger ( )
virtual

Definition at line 113 of file Logger.cpp.

Member Function Documentation

◆ asLogger() [1/2]

static const Logger & BLOCXX_NAMESPACE::Logger::asLogger ( const Logger & lgr)
inlinestatic

Utility functions for backward compatibility with LoggerRef and the BLOCXX_LOG macros.

Definition at line 309 of file Logger.hpp.

◆ asLogger() [2/2]

static const Logger & BLOCXX_NAMESPACE::Logger::asLogger ( const LoggerRef & lgr)
inlinestatic

Definition at line 313 of file Logger.hpp.

◆ categoryIsEnabled()

bool BLOCXX_NAMESPACE::Logger::categoryIsEnabled ( const String & category) const

Determine if the log category is enabled.

Definition at line 329 of file Logger.cpp.

References BLOCXX_NAMESPACE::LogAppender::categoryIsEnabled(), and m_appender.

◆ clone()

LoggerRef BLOCXX_NAMESPACE::Logger::clone ( ) const
virtual

Definition at line 119 of file Logger.cpp.

References BLOCXX_NAMESPACE::Logger.

◆ componentAndCategoryAreEnabled()

bool BLOCXX_NAMESPACE::Logger::componentAndCategoryAreEnabled ( const String & component,
const String & category ) const

Determine if the component and category are both enabled.

Definition at line 343 of file Logger.cpp.

References BLOCXX_NAMESPACE::LogAppender::componentAndCategoryAreEnabled(), and m_appender.

◆ getDefaultComponent()

String BLOCXX_NAMESPACE::Logger::getDefaultComponent ( ) const

Gets the default component.

Returns
The default component

Definition at line 239 of file Logger.cpp.

References m_defaultComponent.

◆ getLogLevel()

ELogLevel BLOCXX_NAMESPACE::Logger::getLogLevel ( ) const
inline
Returns
The current log level

Definition at line 253 of file Logger.hpp.

Referenced by BLOCXX_NAMESPACE::AppenderLogger::getLevel(), and levelIsEnabled().

◆ levelIsEnabled()

bool BLOCXX_NAMESPACE::Logger::levelIsEnabled ( const ELogLevel level) const

Check if the logger is enabled for given level.

Definition at line 336 of file Logger.cpp.

References getLogLevel().

◆ logDebug()

void BLOCXX_NAMESPACE::Logger::logDebug ( const String & message,
const char * filename = 0,
int fileline = -1,
const char * methodname = 0 ) const

If getLogLevel() >= E_DEBUG_LEVEL, Log debug info.

Parameters
messageThe string to log.
filenameThe file where the log statement was written.
filelineThe line number of the file where the log statement was written.
methodnameThe method name where the log statement was written.

Definition at line 166 of file Logger.cpp.

References BLOCXX_NAMESPACE::E_DEBUG_LEVEL, m_defaultComponent, m_logLevel, processLogMessage(), and STR_DEBUG_CATEGORY.

Referenced by BLOCXX_NAMESPACE::ScopeLogger::ScopeLogger(), BLOCXX_NAMESPACE::ScopeLogger::ScopeLogger(), BLOCXX_NAMESPACE::ScopeLogger::ScopeLogger(), BLOCXX_NAMESPACE::ScopeLogger::ScopeLogger(), and BLOCXX_NAMESPACE::ScopeLogger::~ScopeLogger().

◆ logDebug2()

void BLOCXX_NAMESPACE::Logger::logDebug2 ( const String & message,
const char * filename = 0,
int fileline = -1,
const char * methodname = 0 ) const

If getLogLevel() >= E_DEBUG2_LEVEL, Log debug info.

Parameters
messageThe string to log.
filenameThe file where the log statement was written.
filelineThe line number of the file where the log statement was written.
methodnameThe method name where the log statement was written.

Definition at line 176 of file Logger.cpp.

References BLOCXX_NAMESPACE::E_DEBUG2_LEVEL, m_defaultComponent, m_logLevel, processLogMessage(), and STR_DEBUG2_CATEGORY.

◆ logDebug3()

void BLOCXX_NAMESPACE::Logger::logDebug3 ( const String & message,
const char * filename = 0,
int fileline = -1,
const char * methodname = 0 ) const

If getLogLevel() >= E_DEBUG3_LEVEL, Log debug info.

Parameters
messageThe string to log.
filenameThe file where the log statement was written.
filelineThe line number of the file where the log statement was written.
methodnameThe method name where the log statement was written.

Definition at line 186 of file Logger.cpp.

References BLOCXX_NAMESPACE::E_DEBUG3_LEVEL, m_defaultComponent, m_logLevel, processLogMessage(), and STR_DEBUG3_CATEGORY.

◆ logError()

void BLOCXX_NAMESPACE::Logger::logError ( const String & message,
const char * filename = 0,
int fileline = -1,
const char * methodname = 0 ) const

If getLogLevel() >= E_ERROR_LEVEL, Log message with an error category and the default component.

Parameters
messageThe string to log.
filenameThe file where the log statement was written.
filelineThe line number of the file where the log statement was written.
methodnameThe method name where the log statement was written.

Definition at line 136 of file Logger.cpp.

References BLOCXX_NAMESPACE::E_ERROR_LEVEL, m_defaultComponent, m_logLevel, processLogMessage(), and STR_ERROR_CATEGORY.

◆ logFatalError()

void BLOCXX_NAMESPACE::Logger::logFatalError ( const String & message,
const char * filename = 0,
int fileline = -1,
const char * methodname = 0 ) const

Log message with a fatal error category and the default component.

Parameters
messageThe string to log.
filenameThe file where the log statement was written.
filelineThe line number of the file where the log statement was written.
methodnameThe method name where the log statement was written.

Definition at line 126 of file Logger.cpp.

References BLOCXX_NAMESPACE::E_FATAL_ERROR_LEVEL, m_defaultComponent, m_logLevel, processLogMessage(), and STR_FATAL_CATEGORY.

◆ logInfo()

void BLOCXX_NAMESPACE::Logger::logInfo ( const String & message,
const char * filename = 0,
int fileline = -1,
const char * methodname = 0 ) const

If getLogLevel() >= E_INFO_LEVEL, Log info.

Parameters
messageThe string to log.
filenameThe file where the log statement was written.
filelineThe line number of the file where the log statement was written.
methodnameThe method name where the log statement was written.

Definition at line 156 of file Logger.cpp.

References BLOCXX_NAMESPACE::E_INFO_LEVEL, m_defaultComponent, m_logLevel, processLogMessage(), and STR_INFO_CATEGORY.

◆ logLevelToString()

◆ logMessage() [1/5]

void BLOCXX_NAMESPACE::Logger::logMessage ( const LogMessage & message) const

Log a message.

The current log level is ignored.

Parameters
messageThe message to log

Definition at line 224 of file Logger.cpp.

References processLogMessage().

◆ logMessage() [2/5]

void BLOCXX_NAMESPACE::Logger::logMessage ( const String & category,
const String & message ) const

Log a message using the default component and specified category.

The current log level is ignored.

Parameters
categoryThe category of the log message.
messageThe message to log

Definition at line 210 of file Logger.cpp.

References m_defaultComponent, and processLogMessage().

◆ logMessage() [3/5]

void BLOCXX_NAMESPACE::Logger::logMessage ( const String & category,
const String & message,
const char * filename,
int fileline,
const char * methodname ) const

Log a message using the default component and specified category.

The current log level is ignored.

Parameters
categoryThe category of the log message.
messageThe message to log
filenameThe file where the log statement was written.
filelineThe line number of the file where the log statement was written.
methodnameThe method name where the log statement was written.

Definition at line 217 of file Logger.cpp.

References m_defaultComponent, and processLogMessage().

◆ logMessage() [4/5]

void BLOCXX_NAMESPACE::Logger::logMessage ( const String & component,
const String & category,
const String & message ) const

Log a message using the specified component and category The current log level is ignored.

Parameters
componentThe component generating the log message.
categoryThe category of the log message.
messageThe message to log

Definition at line 196 of file Logger.cpp.

References processLogMessage().

◆ logMessage() [5/5]

void BLOCXX_NAMESPACE::Logger::logMessage ( const String & component,
const String & category,
const String & message,
const char * filename,
int fileline,
const char * methodname ) const

Log a message using the specified component and category The current log level is ignored.

Parameters
componentThe component generating the log message.
categoryThe category of the log message.
messageThe message to log
filenameThe file where the log statement was written.
filelineThe line number of the file where the log statement was written.
methodnameThe method name where the log statement was written.

Definition at line 203 of file Logger.cpp.

References processLogMessage().

◆ logWarning()

void BLOCXX_NAMESPACE::Logger::logWarning ( const String & message,
const char * filename = 0,
int fileline = -1,
const char * methodname = 0 ) const

If getLogLevel() >= E_WARNING_LEVEL, Log info.

Parameters
messageThe string to log.
filenameThe file where the log statement was written.
filelineThe line number of the file where the log statement was written.
methodnameThe method name where the log statement was written.

Definition at line 146 of file Logger.cpp.

References BLOCXX_NAMESPACE::E_WARNING_LEVEL, m_defaultComponent, m_logLevel, processLogMessage(), and STR_WARNING_CATEGORY.

◆ operator=()

Logger & BLOCXX_NAMESPACE::Logger::operator= ( const Logger & x)

Definition at line 94 of file Logger.cpp.

References m_appender, m_defaultComponent, and m_logLevel.

◆ processLogMessage()

◆ setDefaultComponent()

void BLOCXX_NAMESPACE::Logger::setDefaultComponent ( const String & component)

Sets the default component.

This function is not thread safe.

Parameters
componentThe new default component

Definition at line 231 of file Logger.cpp.

References BLOCXX_ASSERT, and m_defaultComponent.

◆ setLogLevel() [1/2]

void BLOCXX_NAMESPACE::Logger::setLogLevel ( const String & logLevel)

Set the log level.

All lower level log messages will be ignored. This function is not thread safe.

Parameters
logLevelThe log level, valid values: { STR_FATAL_ERROR_CATEGORY, STR_ERROR_CATEGORY, STR_INFO_CATEGORY, STR_DEBUG_CATEGORY, STR_DEBUG2_CATEGORY, STR_DEBUG3_CATEGORY }. Case-insensitive. If logLevel is unknown, the level will be set to E_FATAL_ERROR_LEVEL

Definition at line 253 of file Logger.cpp.

References setLogLevel(), and stringToLogLevel().

◆ setLogLevel() [2/2]

void BLOCXX_NAMESPACE::Logger::setLogLevel ( ELogLevel logLevel)

Set the log level.

All lower level log messages will be ignored. This function is not thread safe.

Parameters
logLevelthe level as an enumeration value.

Definition at line 246 of file Logger.cpp.

References m_logLevel.

Referenced by BLOCXX_NAMESPACE::AppenderLogger::AppenderLogger(), BLOCXX_NAMESPACE::AppenderLogger::AppenderLogger(), and setLogLevel().

◆ stringToLogLevel()

◆ swap()

void BLOCXX_NAMESPACE::Logger::swap ( Logger & x)

Member Data Documentation

◆ m_appender

◆ m_defaultComponent

String BLOCXX_NAMESPACE::Logger::m_defaultComponent
protected

◆ m_logLevel

ELogLevel BLOCXX_NAMESPACE::Logger::m_logLevel
protected

◆ STR_ALL_CATEGORY

const GlobalString BLOCXX_NAMESPACE::Logger::STR_ALL_CATEGORY = { "ALL", 0, {0, PTHREAD_MUTEX_INITIALIZER} }
static

Definition at line 98 of file Logger.hpp.

Referenced by logLevelToString(), and stringToLogLevel().

◆ STR_DEBUG2_CATEGORY

const GlobalString BLOCXX_NAMESPACE::Logger::STR_DEBUG2_CATEGORY = { "DEBUG2", 0, {0, PTHREAD_MUTEX_INITIALIZER} }
static

◆ STR_DEBUG3_CATEGORY

const GlobalString BLOCXX_NAMESPACE::Logger::STR_DEBUG3_CATEGORY = { "DEBUG3", 0, {0, PTHREAD_MUTEX_INITIALIZER} }
static

◆ STR_DEBUG_CATEGORY

const GlobalString BLOCXX_NAMESPACE::Logger::STR_DEBUG_CATEGORY = { "DEBUG", 0, {0, PTHREAD_MUTEX_INITIALIZER} }
static

◆ STR_DEFAULT_COMPONENT

const GlobalString BLOCXX_NAMESPACE::Logger::STR_DEFAULT_COMPONENT = { "none", 0, {0, PTHREAD_MUTEX_INITIALIZER} }
static

Definition at line 99 of file Logger.hpp.

◆ STR_ERROR_CATEGORY

const GlobalString BLOCXX_NAMESPACE::Logger::STR_ERROR_CATEGORY = { "ERROR", 0, {0, PTHREAD_MUTEX_INITIALIZER} }
static

◆ STR_FATAL_CATEGORY

const GlobalString BLOCXX_NAMESPACE::Logger::STR_FATAL_CATEGORY = { "FATAL", 0, {0, PTHREAD_MUTEX_INITIALIZER} }
static

◆ STR_INFO_CATEGORY

const GlobalString BLOCXX_NAMESPACE::Logger::STR_INFO_CATEGORY = { "INFO", 0, {0, PTHREAD_MUTEX_INITIALIZER} }
static

◆ STR_NONE_CATEGORY

const GlobalString BLOCXX_NAMESPACE::Logger::STR_NONE_CATEGORY = { "NONE", 0, {0, PTHREAD_MUTEX_INITIALIZER} }
static

Definition at line 90 of file Logger.hpp.

Referenced by logLevelToString(), and stringToLogLevel().

◆ STR_WARNING_CATEGORY

const GlobalString BLOCXX_NAMESPACE::Logger::STR_WARNING_CATEGORY = { "WARNING", 0, {0, PTHREAD_MUTEX_INITIALIZER} }
static

The documentation for this class was generated from the following files: