Wt  3.3.0
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Groups Pages
Classes | Public Member Functions | Static Public Attributes | Related Functions | List of all members
Wt::WLogger Class Reference

A simple logging class. More...

#include <Wt/WLogger>

Classes

class  Field
 Class that holds the configuration for a single field. More...
 
struct  Sep
 Class that indicates a field separator. More...
 
struct  TimeStamp
 Class that indicates a time stamp. More...
 

Public Member Functions

 WLogger ()
 Creates a new logger. More...
 
 ~WLogger ()
 Destructor.
 
void setStream (std::ostream &o)
 Sets the output stream. More...
 
void setFile (const std::string &path)
 Sets the output file. More...
 
void configure (const std::string &config)
 Configures what things are logged. More...
 
void addField (const std::string &name, bool isString)
 Adds a field. More...
 
const std::vector< Field > & fields () const
 Returns the field list.
 
WLogEntry entry (const std::string &type) const
 Starts a new log entry. More...
 
bool logging (const std::string &type) const
 Returns whether messages of a given type are logged. More...
 
bool logging (const std::string &type, const std::string &scope) const
 Returns whether messages of a given type and scope are logged. More...
 

Static Public Attributes

static const Sep sep = WLogger::Sep()
 Field separator constant. More...
 
static const TimeStamp timestamp = WLogger::TimeStamp()
 Timestamp field constant. More...
 

Related Functions

(Note that these are not member functions.)

WLogEntry log (const std::string &type)
 Logging function. More...
 

Detailed Description

A simple logging class.

This class logs events to a stream in a flexible way. It allows to create log files using the commonly used Common Log Format or Combined Log Format, but provides a general way for logging entries that consists of a fixed number of fields.

It is used by Wt to create the application log (WApplication::log()), and built-in httpd access log.

To use this class for custom logging, you should instantiate a logger, add one or more field definitions using addField(), and set an output stream using setStream() or setFile(). To stream data to the logger, use entry() to start formatting a new entry.

Usage example:

// Setup the logger
Wt::WLogger logger;
logger.addField("datetime", false);
logger.addField("session", false);
logger.addField("type", false);
logger.addField("message", true);
logger.setFile("/tmp/mylog.txt");
// Add an entry
<< '[' << wApp->sessionId() << ']' << Wt::WLogger::sep
<< '[' << "notice" << ']' << Wt::WLogger::sep
<< "Succesfully started.";
See Also
WApplication::log()

Constructor & Destructor Documentation

Wt::WLogger::WLogger ( )

Creates a new logger.

This creates a new logger, which defaults to logging to stderr.

Member Function Documentation

void Wt::WLogger::addField ( const std::string &  name,
bool  isString 
)

Adds a field.

Add a field to the logger. When isString is true, values will be quoted.

void Wt::WLogger::configure ( const std::string &  config)

Configures what things are logged.

The configuration is a string that defines rules for enabling or
disabling certain logging. It is a white-space delimited list of
rules, and each rule is of the form:

- <tt>[-]level</tt> : enables (or disables) logging of messages of
  the given level; '*' is a wild-card that matches all levels

- <tt>[-]level:scope</tt> : enables (or disables) logging of
  messages of the given level and scope; '*' is a wild-card that
  matches all levels or scopes.

The default configuration is <tt>"* -debug"</tt>, i.e. by default
everything is logged, except for "debug" messages.

Some other examples:

- <tt>"* -debug debug:wthttp"</tt>: logs everything, including
  debugging messages of scope "wthttp", but no other debugging
  messages.

- <tt>"* -info -debug"</tt>: disables logging of info messages in
  addition to debugging messages.
Note
The standard logging is typically configured in the configuration file, in the <log-config> block.
WLogEntry Wt::WLogger::entry ( const std::string &  type) const

Starts a new log entry.

Returns a new entry. The entry is logged in the destructor of the entry (i.e. when the entry goes out of scope).

The type reflects a logging level. You can freely choose a type, but these are commonly used inside the library:

  • "debug": debugging info (suppressed by default)
  • "info": informational notices
  • "warning": warnings (potentially wrong API use)
  • "secure": security-related events
  • "error": errors (wrong API use, unexpected protocol messages)
  • "fatal": fatal errors (terminate the session)
bool Wt::WLogger::logging ( const std::string &  type) const

Returns whether messages of a given type are logged.

Returns \c true if messages of the given type are logged. It may be
that not messages of all scopes are logged.
See Also
configure()
bool Wt::WLogger::logging ( const std::string &  type,
const std::string &  scope 
) const

Returns whether messages of a given type and scope are logged.

See Also
configure()
void Wt::WLogger::setFile ( const std::string &  path)

Sets the output file.

Opens a file output stream for \p path.
The default logger outputs to stderr.
See Also
setStream()
void Wt::WLogger::setStream ( std::ostream &  o)

Sets the output stream.

The default logger outputs to stderr.
See Also
setFile()

Friends And Related Function Documentation

WLogEntry log ( const std::string &  type)
related

Logging function.

This creates a new log entry, e.g.:

Wt::log("info") << "Doing something interesting now with " << appleCount() << " apples.";

Member Data Documentation

const WLogger::Sep Wt::WLogger::sep = WLogger::Sep()
static

Field separator constant.

See Also
WLogEntry::operator<<(const WLogger::Sep&)
const WLogger::TimeStamp Wt::WLogger::timestamp = WLogger::TimeStamp()
static

Timestamp field constant.

See Also
WLogEntry::operator<<(const WLogger::TimeStamp&)

Generated on Fri May 31 2013 for the C++ Web Toolkit (Wt) by doxygen 1.8.3.1