X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=Utils%2FLogger%2FConfig.hh;h=634d723264d49a44c08a9c3d9373cc53113b85dd;hb=82ad2ed94c12c3e53097fef92978de8c28239fab;hp=27a9af81f8aea25117b93a84dceba03be3317560;hpb=ae06fe86f16fdabb7ffb219d255444d2eb4f4f79;p=senf.git diff --git a/Utils/Logger/Config.hh b/Utils/Logger/Config.hh index 27a9af8..634d723 100644 --- a/Utils/Logger/Config.hh +++ b/Utils/Logger/Config.hh @@ -45,13 +45,63 @@ 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. - - \fixme Restructure compile-time configuration: Only allow stream based configuration using - SENF_LOG_CONF. For more complex configuration, accept a macro SENF_LOG_CONFFILE which, if - defined, must define the path of a file to be included. Area specific configuration must be - done in this include file. The area must be complete (not only a predeclaration) at that - point. + discarded. This allows to additionally disable messages at run-time. Message routing is managed + via the \ref Target interface. + + \section config_compile Compile time configuration + + Compile time configuration is set on the compiler command line: +
+    g++ ... -DSENF_LOG_CONF="(( (senf)(log)(Debug),(_),DISABLED ))
+                             (( (senf)(log)(Debug),(foo)(SomeClass),VERBOSE ))
+                             (( (foo)(Transactions),(_),NOTICE ))" ...
+    
+ The value is relatively complex; It's a Boost.Preprocessor style sequence of tuples, of which + the first and second elements are again sequences. What this boils down to, is that it allows to + configure compile time logging limits based on stream and optional area. + + The above example disables all debug logging by setting the default log limit for all areas on + the \c senf::log::Debug stream to \c DISABLED. It then re-enables debug logging only within the + \c foo::SomeClass area, where it is set to \c VERBOSE. Furthermore, the limit on the \c + foo::Transactions stream is set to \c NOTICE. + + \see \ref SENF_LOG_CONF + + \section config_runtime Runtime configuration + + The runtime configuration is performed by routing messages to one or more logging targets: + \code + senf::log::ConsoleLog consoleLog; + senf::log::FileLog fileLog ("my.log"); + + consoleLog.route(); + consoleLog.route(senf::log::Target::REJECT); + 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. + + The routing statements are processed by the targets in order, the first matching rule will + decide a log messages fate for that target. + + \see \ref senf::log::Target + + \section config_timesource Log message timing + + One auxiliary aspect of logging is message timing. Each message is stamped with a time-stamp + giving the exact time the message was created. How the current date/time value is created may be + changed by setting a \e TimeSource. A TimeSource is an instance derived from + senf::log::TimeSource which will return the current universal time (UTC) when called. + + By default, the logging library will call gettimeofday() for each log message. To change the + time source, just pass the new class or instance to senf::log::timeSource: + \code + // Use senf::Scheduler::instance().eventTime() to time log messages + senf::log::timeSource(); + \endcode */ namespace senf { @@ -65,13 +115,7 @@ namespace log { /** \brief Compile time configuration This define symbol sets the compile time logger configuration. This symbol should normally - be set on the compiler command line: -
-        g++ ... -DSENF_LOG_CONF="(( (senf)(log)(Debug),(_),DISABLED ))
-                                 (( (senf)(log)(Debug),(foo)(SomeClass),(VERBOSE) ))
-                                 (( (foo)(Transactions),(_),NOTICE ))" ...
-        
- (As this option can get quite long, you might want to use the '-imacros' option instead) + be set on the compiler command line. The formal syntax of this option is: