Wt: Wt::WLogger Class Reference

Wt 3.3.0

- Main Page
- Related Pages
- Modules
- Namespaces
- Classes

- Class List
- Class Hierarchy
- Class Members

Classes | Public Member Functions | Static Public Attributes | Related Functions
Wt::WLogger Class Reference

A simple logging class. More...

`#include <Wt/WLogger>`

List of all members.

## 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.
| ~WLogger ()
| Destructor.
void | setStream (std::ostream &o)
| Sets the output stream.
void | setFile (const std::string &path)
| Sets the output file.
void | configure (const std::string &config)
| Configures what things are logged.
void | addField (const std::string &name, bool isString)
| Adds a field.
const std::vector< Field > & | fields () const
| Returns the field list.
WLogEntry | entry (const std::string &type) const
| Starts a new log entry.
bool | logging (const std::string &type) const
| Returns whether messages of a given type are logged.
bool | logging (const std::string &type, const std::string &scope) const
| Returns whether messages of a given type and scope are logged.
## Static Public Attributes
static const Sep | sep = WLogger::Sep()
| Field separator constant.
static const TimeStamp | timestamp = WLogger::TimeStamp()
| Timestamp field constant.
## Related Functions
(Note that these are not member functions.)
WLogEntry | log (const std::string &type)
| Logging function.

## 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
     Wt::WLogEntry entry = logger.entry();
     entry << Wt::WLogger::timestamp << Wt::WLogger::sep
           << '[' << 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:

- `[-]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.

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 `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 `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&)

All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator