Wt  4.11.1
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.h>

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 char *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.";
A stream-like object for creating an entry in a log file.
Definition: WLogger.h:286
A simple logging class.
Definition: WLogger.h:86
void setFile(const std::string &path)
Sets the output file.
Definition: WLogger.C:264
void addField(const std::string &name, bool isString)
Adds a field.
Definition: WLogger.C:304
static const TimeStamp timestamp
Timestamp field constant.
Definition: WLogger.h:110
static const Sep sep
Field separator constant.
Definition: WLogger.h:98
WLogEntry entry(const std::string &type) const
Starts a new log entry.
Definition: WLogger.C:309
See also
WApplication::log()

Constructor & Destructor Documentation

◆ WLogger()

Wt::WLogger::WLogger ( )

Creates a new logger.

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

Member Function Documentation

◆ addField()

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.

◆ configure()

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:

  • [-]level : enables (or disables) logging of messages of the given level; '*' is a wild-card that matches all levels
  • [-]level:scope : 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 "* -debug", i.e. by default everything is logged, except for "debug" messages.

Some other examples:

  • "* -debug debug:wthttp": logs everything, including debugging messages of scope "wthttp", but no other debugging messages.
  • "* -info -debug": 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.

◆ entry()

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)

◆ logging() [1/3]

bool Wt::WLogger::logging ( const char *  type) const

Returns whether messages of a given type are logged.

Returns true if messages of the given type are logged. It may be that not messages of all scopes are logged.

See also
configure()

◆ logging() [2/3]

bool Wt::WLogger::logging ( const std::string &  type) const

Returns whether messages of a given type are logged.

Returns true if messages of the given type are logged. It may be that not messages of all scopes are logged.

See also
configure()

◆ logging() [3/3]

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()

◆ setFile()

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

Sets the output file.

Opens a file output stream for path. The default logger outputs to stderr.

This logs a message notifying the user whether the file was successfully opened for writing to the previous ostream (usually std::cerr).

If you want to suppress the info message, you can configure the logger with "-info:WLogger". The error when the file was not successfully opened is logged at the error log level.

Note
If the previous ostream was a file set with this method, the message will be logged to std::cerr instead of the previous file, because the previous file is closed first.
See also
setStream()

◆ 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

◆ log()

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

◆ sep

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

Field separator constant.

See also
WLogEntry::operator<<(const WLogger::Sep&)

◆ timestamp

const WLogger::TimeStamp Wt::WLogger::timestamp = WLogger::TimeStamp()
static

Timestamp field constant.

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