OW_NAMESPACE::Logger Class Reference

Logging interface. More...

#include <OW_Logger.hpp>

Inheritance diagram for OW_NAMESPACE::Logger:

Inheritance graph
[legend]
Collaboration diagram for OW_NAMESPACE::Logger:

Collaboration graph
[legend]
List of all members.

Public Types

enum  ELoggerErrorCodes { E_UNKNOWN_LOG_APPENDER_TYPE, E_INVALID_MAX_FILE_SIZE, E_INVALID_MAX_BACKUP_INDEX }

Public Member Functions

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 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 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)
 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.
LoggerRef clone () const
 Make a copy of the derived instance.
virtual ~Logger ()

Static Public Member Functions

static LoggerRef getCurrentLogger ()
 Get a copy of the per thread LoggerRef or if not set, the default one.
static LoggerRef getDefaultLogger ()
 Returns a copy of default LoggerRef.
static bool setDefaultLogger (const LoggerRef &ref)
 Set the default global logger.
static bool setThreadLogger (const LoggerRef &ref)
 Set a per thread Logger that overrides the default one.
static LoggerRef createLogger (const String &type, bool debug)
 Create a concrete logger depending on the type string passed in.

Static Public Attributes

static const String STR_NONE_CATEGORY
static const String STR_FATAL_CATEGORY
static const String STR_ERROR_CATEGORY
static const String STR_INFO_CATEGORY
static const String STR_DEBUG_CATEGORY
static const String STR_ALL_CATEGORY
static const String STR_DEFAULT_COMPONENT

Protected Member Functions

 Logger ()
 Logger (const ELogLevel l)
 Logger (const String &defaultComponent, const ELogLevel logLevel)
virtual void doProcessLogMessage (const LogMessage &message) const =0
 Output the message.
virtual bool doCategoryIsEnabled (const String &category) const
 Return whether logging is enabled for the category.
virtual bool doComponentAndCategoryAreEnabled (const String &component, const String &category) const
 Return whether logging is enabled for the component and category.
virtual LoggerRef doClone () const =0
 Make a copy of the derived instance.
 Logger (const Logger &)
Loggeroperator= (const Logger &)
void swap (Logger &x)

Private Member Functions

void processLogMessage (const LogMessage &message) const

Private Attributes

ELogLevel m_logLevel
String m_defaultComponent

Detailed Description

Logging interface.

Used to output log messages. A Logger has a component and a log level. The component will be used for all log messages generated, unless another component explicitly specified in a call to logMessage().

Invariants:

Responsibilities:

Collaborators:

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

Copy semantics: Non-copyable

Exception safety: Strong

Definition at line 74 of file OW_Logger.hpp.


Member Enumeration Documentation

enum OW_NAMESPACE::Logger::ELoggerErrorCodes
 

Enumerator:
E_UNKNOWN_LOG_APPENDER_TYPE 
E_INVALID_MAX_FILE_SIZE 
E_INVALID_MAX_BACKUP_INDEX 

Definition at line 86 of file OW_Logger.hpp.


Constructor & Destructor Documentation

OW_NAMESPACE::Logger::~Logger  )  [virtual]
 

Definition at line 66 of file OW_Logger.cpp.

OW_NAMESPACE::Logger::Logger  )  [protected]
 

Definition at line 71 of file OW_Logger.cpp.

OW_NAMESPACE::Logger::Logger const ELogLevel  l  )  [protected]
 

Definition at line 78 of file OW_Logger.cpp.

OW_NAMESPACE::Logger::Logger const String defaultComponent,
const ELogLevel  logLevel
[protected]
 

Parameters:
defaultComponent The component used for log messages (can be overridden my logMessage())
logLevel The log level. All lower level log messages will be ignored.

Definition at line 85 of file OW_Logger.cpp.

References m_defaultComponent, and OW_ASSERT.

OW_NAMESPACE::Logger::Logger const Logger  )  [protected]
 

Definition at line 300 of file OW_Logger.cpp.


Member Function Documentation

bool OW_NAMESPACE::Logger::categoryIsEnabled const String category  )  const
 

Determine if the log category is enabled.

Definition at line 210 of file OW_Logger.cpp.

References doCategoryIsEnabled().

Referenced by OW_NAMESPACE::AppenderLogger::doCategoryIsEnabled().

LoggerRef OW_NAMESPACE::Logger::clone  )  const
 

Make a copy of the derived instance.

Provided the derived class has a suitable copy constructor, an implementation of clone should simply be: LoggerRef DerivedLogger::doClone() const { return LoggerRef(new DerivedLogger(*this)); }

Definition at line 294 of file OW_Logger.cpp.

References doClone().

bool OW_NAMESPACE::Logger::componentAndCategoryAreEnabled const String component,
const String category
const
 

Determine if the component and category are both enabled.

Definition at line 217 of file OW_Logger.cpp.

References doComponentAndCategoryAreEnabled().

Referenced by OW_NAMESPACE::AppenderLogger::doComponentAndCategoryAreEnabled().

LoggerRef OW_NAMESPACE::Logger::createLogger const String type,
bool  debug
[static]
 

Create a concrete logger depending on the type string passed in.

On Linux, if type == "syslog" a logger the writes to the syslog will be returned. If type == "" || type == "null" a logger that doesn't do anything will be returned. If type == "stderr" a logger that writes to stderr will be returned. Otherwise type is treated as a filename and a logger that writes to that file will be returned.

Parameters:
type The type of logger to create
debug Indicates whether to create a debug logger (duplicates all messages to stderr)
Returns:
a Logger. The default component == STR_DEFAULT_COMPONENT and log level == E_DEBUG_LEVEL

Definition at line 260 of file OW_Logger.cpp.

References OW_NAMESPACE::LogAppender::ALL_CATEGORIES, OW_NAMESPACE::LogAppender::ALL_COMPONENTS, OW_NAMESPACE::LogAppender::createLogAppender(), OW_NAMESPACE::ConfigOpts::LOG_1_LOCATION_opt, name, OW_NAMESPACE::Array< T >::push_back(), STR_DEFAULT_COMPONENT, OW_NAMESPACE::LogMessagePatternFormatter::STR_DEFAULT_MESSAGE_PATTERN, type, OW_NAMESPACE::LogAppender::TYPE_FILE, OW_NAMESPACE::LogAppender::TYPE_NULL, OW_NAMESPACE::LogAppender::TYPE_STDERR, and OW_NAMESPACE::LogAppender::TYPE_SYSLOG.

bool OW_NAMESPACE::Logger::doCategoryIsEnabled const String category  )  const [protected, virtual]
 

Return whether logging is enabled for the category.

Default implementation always returns true.

Reimplemented in OW_NAMESPACE::AppenderLogger.

Definition at line 231 of file OW_Logger.cpp.

Referenced by categoryIsEnabled().

virtual LoggerRef OW_NAMESPACE::Logger::doClone  )  const [protected, pure virtual]
 

Make a copy of the derived instance.

Provided the derived class has a suitable copy constructor, an implementation of clone should simply be: LoggerRef DerivedLogger::doClone() const { return LoggerRef(new DerivedLogger(*this)); }

Implemented in OW_NAMESPACE::AppenderLogger, OW_NAMESPACE::CerrLogger, and OW_NAMESPACE::NullLogger.

Referenced by clone().

bool OW_NAMESPACE::Logger::doComponentAndCategoryAreEnabled const String component,
const String category
const [protected, virtual]
 

Return whether logging is enabled for the component and category.

Default implementation always returns true.

Reimplemented in OW_NAMESPACE::AppenderLogger.

Definition at line 224 of file OW_Logger.cpp.

Referenced by componentAndCategoryAreEnabled().

virtual void OW_NAMESPACE::Logger::doProcessLogMessage const LogMessage message  )  const [protected, pure virtual]
 

Output the message.

Calls will not be serialized, so the derived class' implementation must be thread safe.

Implemented in OW_NAMESPACE::AppenderLogger, OW_NAMESPACE::CerrLogger, and OW_NAMESPACE::NullLogger.

Referenced by processLogMessage().

LoggerRef OW_NAMESPACE::Logger::getCurrentLogger  )  [static]
 

Get a copy of the per thread LoggerRef or if not set, the default one.

If neither setDefaultLogger() or setThreadLogger() has been called, the default logger will be set to a NullLogger, and then returned.

Definition at line 416 of file OW_Logger.cpp.

References OW_NAMESPACE::callOnce(), OW_NAMESPACE::g_loggerKey, OW_NAMESPACE::g_onceGuard, getDefaultLogger(), and OW_NAMESPACE::initGuardAndKey().

String OW_NAMESPACE::Logger::getDefaultComponent  )  const
 

Gets the default component.

Returns:
The default component

Definition at line 246 of file OW_Logger.cpp.

References m_defaultComponent.

LoggerRef OW_NAMESPACE::Logger::getDefaultLogger  )  [static]
 

Returns a copy of default LoggerRef.

If you want to log messages, you shouldn't call this function. Use getCurrentLogger() instead. If setDefaultLogger() hasn't been called, the default logger will be set to a NullLogger, and then returned.

Definition at line 401 of file OW_Logger.cpp.

References OW_NAMESPACE::callOnce(), OW_NAMESPACE::g_defaultLogger, OW_NAMESPACE::g_mutexGuard, OW_NAMESPACE::g_onceGuard, and OW_NAMESPACE::initGuardAndKey().

Referenced by getCurrentLogger().

ELogLevel OW_NAMESPACE::Logger::getLogLevel  )  const [inline]
 

Returns:
The current log level

Definition at line 218 of file OW_Logger.hpp.

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

bool OW_NAMESPACE::Logger::levelIsEnabled const ELogLevel  level  ) 
 

Check if the logger is enabled for given level.

Definition at line 432 of file OW_Logger.cpp.

References getLogLevel().

void OW_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:
message The string to log.
filename The file where the log statement was written.
fileline The line number of the file where the log statement was written.
methodname The method name where the log statement was written.

Definition at line 165 of file OW_Logger.cpp.

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

void OW_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:
message The string to log.
filename The file where the log statement was written.
fileline The line number of the file where the log statement was written.
methodname The method name where the log statement was written.

Definition at line 145 of file OW_Logger.cpp.

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

void OW_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:
message The string to log.
filename The file where the log statement was written.
fileline The line number of the file where the log statement was written.
methodname The method name where the log statement was written.

Definition at line 135 of file OW_Logger.cpp.

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

void OW_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:
message The string to log.
filename The file where the log statement was written.
fileline The line number of the file where the log statement was written.
methodname The method name where the log statement was written.

Definition at line 155 of file OW_Logger.cpp.

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

void OW_NAMESPACE::Logger::logMessage const LogMessage message  )  const
 

Log a message.

The current log level is ignored.

Parameters:
message The message to log

Definition at line 203 of file OW_Logger.cpp.

References processLogMessage().

void OW_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:
category The category of the log message.
message The message to log
filename The file where the log statement was written.
fileline The line number of the file where the log statement was written.
methodname The method name where the log statement was written.

Definition at line 196 of file OW_Logger.cpp.

References m_defaultComponent, and processLogMessage().

void OW_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:
category The category of the log message.
message The message to log

Definition at line 189 of file OW_Logger.cpp.

References m_defaultComponent, and processLogMessage().

void OW_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:
component The component generating the log message.
category The category of the log message.
message The message to log
filename The file where the log statement was written.
fileline The line number of the file where the log statement was written.
methodname The method name where the log statement was written.

Definition at line 182 of file OW_Logger.cpp.

References processLogMessage().

void OW_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:
component The component generating the log message.
category The category of the log message.
message The message to log

Definition at line 175 of file OW_Logger.cpp.

References processLogMessage().

Referenced by OW_NAMESPACE::AppenderLogger::doProcessLogMessage().

Logger & OW_NAMESPACE::Logger::operator= const Logger  )  [protected]
 

Definition at line 310 of file OW_Logger.cpp.

References m_defaultComponent, and m_logLevel.

void OW_NAMESPACE::Logger::processLogMessage const LogMessage message  )  const [private]
 

Definition at line 94 of file OW_Logger.cpp.

References OW_NAMESPACE::LogMessage::category, OW_NAMESPACE::LogMessage::component, doProcessLogMessage(), OW_NAMESPACE::String::empty(), OW_NAMESPACE::LogMessage::message, and OW_ASSERT.

Referenced by logDebug(), logError(), logFatalError(), logInfo(), and logMessage().

void OW_NAMESPACE::Logger::setDefaultComponent const String component  ) 
 

Sets the default component.

This function is not thread safe.

Parameters:
component The new default component

Definition at line 238 of file OW_Logger.cpp.

References m_defaultComponent, and OW_ASSERT.

bool OW_NAMESPACE::Logger::setDefaultLogger const LoggerRef ref  )  [static]
 

Set the default global logger.

Definition at line 359 of file OW_Logger.cpp.

References OW_NAMESPACE::callOnce(), OW_NAMESPACE::g_defaultLogger, OW_NAMESPACE::g_mutexGuard, OW_NAMESPACE::g_onceGuard, and OW_NAMESPACE::initGuardAndKey().

void OW_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:
logLevel The log level, valid values: { STR_FATAL_ERROR_CATEGORY, STR_ERROR_CATEGORY, STR_INFO_CATEGORY, STR_DEBUG_CATEGORY }. Case-insensitive. If logLevel is unknown, the level will be set to E_FATAL_ERROR_LEVEL

Definition at line 105 of file OW_Logger.cpp.

References OW_NAMESPACE::E_INFO_LEVEL, OW_NAMESPACE::String::equalsIgnoreCase(), setLogLevel(), and STR_INFO_CATEGORY.

void OW_NAMESPACE::Logger::setLogLevel ELogLevel  logLevel  ) 
 

Set the log level.

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

Parameters:
logLevel the level as an enumeration value.

Definition at line 253 of file OW_Logger.cpp.

References m_logLevel.

Referenced by setLogLevel().

bool OW_NAMESPACE::Logger::setThreadLogger const LoggerRef ref  )  [static]
 

Set a per thread Logger that overrides the default one.

Definition at line 376 of file OW_Logger.cpp.

References OW_NAMESPACE::callOnce(), OW_NAMESPACE::freeThreadLogger(), OW_NAMESPACE::g_loggerKey, OW_NAMESPACE::g_onceGuard, OW_NAMESPACE::initGuardAndKey(), and OW_ASSERTMSG.

void OW_NAMESPACE::Logger::swap Logger x  )  [protected]
 

Definition at line 319 of file OW_Logger.cpp.

References m_defaultComponent, m_logLevel, OW_NAMESPACE::String::swap(), and OW_NAMESPACE::swap().


Member Data Documentation

String OW_NAMESPACE::Logger::m_defaultComponent [private]
 

Definition at line 333 of file OW_Logger.hpp.

Referenced by getDefaultComponent(), logDebug(), logError(), logFatalError(), Logger(), logInfo(), logMessage(), operator=(), setDefaultComponent(), and swap().

ELogLevel OW_NAMESPACE::Logger::m_logLevel [private]
 

Definition at line 332 of file OW_Logger.hpp.

Referenced by logDebug(), logError(), logFatalError(), logInfo(), operator=(), setLogLevel(), and swap().

const String OW_NAMESPACE::Logger::STR_ALL_CATEGORY [static]
 

Definition at line 83 of file OW_Logger.hpp.

const String OW_NAMESPACE::Logger::STR_DEBUG_CATEGORY [static]
 

Definition at line 82 of file OW_Logger.hpp.

Referenced by OW_NAMESPACE::EmbeddedCIMOMEnvironment::_createLogger(), OW_NAMESPACE::CIMOMEnvironment::_createLogger(), OW_NAMESPACE::SyslogAppender::doProcessLogMessage(), OW_NAMESPACE::LogAppender::getLogLevel(), and logDebug().

const String OW_NAMESPACE::Logger::STR_DEFAULT_COMPONENT [static]
 

Definition at line 84 of file OW_Logger.hpp.

Referenced by createLogger().

const String OW_NAMESPACE::Logger::STR_ERROR_CATEGORY [static]
 

Definition at line 80 of file OW_Logger.hpp.

Referenced by OW_NAMESPACE::EmbeddedCIMOMEnvironment::_createLogger(), OW_NAMESPACE::CIMOMEnvironment::_createLogger(), OW_NAMESPACE::SyslogAppender::doProcessLogMessage(), OW_NAMESPACE::LogAppender::getLogLevel(), and logError().

const String OW_NAMESPACE::Logger::STR_FATAL_CATEGORY [static]
 

Definition at line 79 of file OW_Logger.hpp.

Referenced by OW_NAMESPACE::EmbeddedCIMOMEnvironment::_createLogger(), OW_NAMESPACE::CIMOMEnvironment::_createLogger(), OW_NAMESPACE::SyslogAppender::doProcessLogMessage(), OW_NAMESPACE::LogAppender::getLogLevel(), and logFatalError().

const String OW_NAMESPACE::Logger::STR_INFO_CATEGORY [static]
 

Definition at line 81 of file OW_Logger.hpp.

Referenced by OW_NAMESPACE::EmbeddedCIMOMEnvironment::_createLogger(), OW_NAMESPACE::CIMOMEnvironment::_createLogger(), OW_NAMESPACE::SyslogAppender::doProcessLogMessage(), OW_NAMESPACE::LogAppender::getLogLevel(), logInfo(), and setLogLevel().

const String OW_NAMESPACE::Logger::STR_NONE_CATEGORY [static]
 

Definition at line 78 of file OW_Logger.hpp.


The documentation for this class was generated from the following files:
Generated on Thu Feb 9 09:13:57 2006 for openwbem by  doxygen 1.4.6