// $Id$
//
-// Copyright (C) 2007
-// Fraunhofer Institut fuer offene Kommunikationssysteme (FOKUS)
-// Kompetenzzentrum fuer Satelitenkommunikation (SatCom)
+// Copyright (C) 2007
+// Fraunhofer Institute for Open Communication Systems (FOKUS)
+// Competence Center NETwork research (NET), St. Augustin, GERMANY
// Stefan Bund <g0dil@berlios.de>
//
// This program is free software; you can redistribute it and/or modify
Log messages are arbitrarily created throughout the code using simple log statements (which are
macros). Besides the log message itself, every log message is labeled with additional
information: The \e stream, the \e area and a log \e level. If the message is not compile-time
- disabled, the message is then directed to one of several log \e targets.
+ disabled, the message is then directed to one or several log \e targets.
A \e stream combines log messages with a single purpose: Debug messages, access logging and so
on. Any number of streams may be defined. There is one predefined default stream called \c
- senf::log::Debug. (see: \ref SENF_LOG_DEF_STREAM)
+ senf::log::Debug. (see: \ref SENF_LOG_DEFINE_STREAM)
The \e area gives information about the source location of the message. Areas may be defined and
assigned arbitrarily but should be used to label messages from a single class or subsystem. It
- is possible to reuse a class as it's own area tag, which is often desireable. (see: \ref
- SENF_LOG_DEF_AREA, \ref SENF_LOG_CLASS_AREA)
+ is possible to reuse a class as it's own area tag, which is often desireable. There is a
+ default area \c senf::log::DefaultArea which is used, when no other area is assigned. (see: \ref
+ SENF_LOG_DEFINE_AREA, \ref SENF_LOG_CLASS_AREA)
The log \e level gives information on the importance of the message. The list of log-levels is
fixed. (see: \ref loglevels)
or disabled at \e compile time. Messages disabled at compile time should not generate any
code. (see: \ref SENF_LOG_CONF)
+ \attention The default log stream senf::log::Debug has senf::log::VERBOSE messages
+ <em>disabled</em> at compile time. senf::log::VERBOSE message will therefore only appear,
+ if you explictly enable the messages for the area in question using (here for the area
+ <code>some::Area</code>)
+ <pre>
+ g++ ... -DSENF_LOG_CONF="(( (senf)(log)(Debug), (some)(Area), VERBOSE ))"
+ </pre>
+ in addition to routing the messages at runtime. For more, see \ref config.
+
To be of any use, the log messages have to be written somewhere. This is the responsibility of
any number of \e targets. A \e target receives messages and using it's routing information
decides, wether the message is output or not. A message may be routed to multiple targets
// Define a new log stream with default level, runtime limit and compile time limit
// set to senf::log::MESSAGE
- SENF_LOG_DEF_STREAM( UserLog, senf::log::MESSAGE, senf::log::MESSAGE, senf::log::MESSAGE );
+ SENF_LOG_DEFINE_STREAM( UserLog, senf::log::MESSAGE, senf::log::MESSAGE, senf::log::MESSAGE );
class Froblizer
{
// Define a log area which will automatically be used by all members of this class.
- // This is a combination of SENF_LOG_DEF_AREA and SENF_LOG_DEFAULT_AREA.
+ // This is a combination of SENF_LOG_DEFINE_AREA and SENF_LOG_DEFAULT_AREA.
SENF_LOG_CLASS_AREA();
// Set default log parameters for this scope.
// Define an alias for emergency debug messages
// The log area is inherited from the default at the place, where this
// alias is used *not* where it is defined
- SENF_LOG_DEF_ALIAS(LogEmerg, (senf::log::Debug)(senf::log::CRITICAL));
+ SENF_LOG_DEFINE_ALIAS(LogEmerg, (senf::log::Debug)(senf::log::CRITICAL));
void test();
void foo::Froblizer::froblize()
{
SENF_LOG(("This is the UserLog at level NOTICE in the FroblizeArea"));
- SENF_LOG((senf::log::WARNING) ("Same stream and area but at warning level"));
+ SENF_LOG((senf::log::IMPORTANT) ("Same stream and area but at important level"));
SENF_LOG((LogEmerg) ("This goes to the DebugLog at level CRITICAL in the FroblizerArea"));
}
int main(int, char **)
{
// Set up the routing targets
- senf::log::ConsoleTarget console;
+ senf::log::ConsoleTarget & console (senf::log::ConsoleTarget::instance());
senf::log::FileTarget logfile ("my.log");
// Debug messages go to the console