X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=Utils%2FLogger%2FConfig.hh;h=80d02cb694437da0c132b713debd6c6f9e6a7761;hb=f37ed4b85a6949cbe72ccb2d2ac098aebed57eaa;hp=634d723264d49a44c08a9c3d9373cc53113b85dd;hpb=82ad2ed94c12c3e53097fef92978de8c28239fab;p=senf.git diff --git a/Utils/Logger/Config.hh b/Utils/Logger/Config.hh index 634d723..80d02cb 100644 --- a/Utils/Logger/Config.hh +++ b/Utils/Logger/Config.hh @@ -1,8 +1,8 @@ // $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 // // This program is free software; you can redistribute it and/or modify @@ -46,7 +46,7 @@ Runtime configuration on the other hand deals with routing all those messages, which are enabled at compile time to the logging targets. If a message is not routed, it will be discarded. This allows to additionally disable messages at run-time. Message routing is managed - via the \ref Target interface. + via the ::Target interface. \section config_compile Compile time configuration @@ -71,7 +71,7 @@ The runtime configuration is performed by routing messages to one or more logging targets: \code - senf::log::ConsoleLog consoleLog; + senf::log::ConsoleLog & consoleLog (senf::log::ConsoleLog::instance()); senf::log::FileLog fileLog ("my.log"); consoleLog.route(); @@ -79,13 +79,25 @@ consoleLog.route(); fileLog.route(); - \endcode Here we see an already relatively complex setup: All debug messages (that is, those, - which are not disabled at compile time) are routed to the console. We also route important - transactions to the console \e except transactions from the \c foo::SomeClass area. The \c - fileLog simply receives all transaction log messages. + \endcode + Here we see an already relatively complex setup: All debug messages (that is, those, which are + not disabled at compile time) are routed to the console. We also route important transactions to + the console \e except transactions from the \c foo::SomeClass area. The \c fileLog simply + receives all transaction log messages. The routing statements are processed by the targets in order, the first matching rule will decide a log messages fate for that target. + + There are two cases, where this setup may lead to inadvertently lost log messages: + \li When using a library which does internally use the Logger but not initializing the logger in + your application. + \li When log messages are created during initialization of static objects. + Since no route is set up in these cases, the messages will be dropped. + + To counter this problem, the logger is initially in fallback routing state. If any log + message arrives in this state, the message will be unconditionally logged to the console. The + first routing statement on any target will take the logger out of this state and normal routing + will take place. \see \ref senf::log::Target