From: g0dil Date: Thu, 28 Feb 2008 09:15:46 +0000 (+0000) Subject: Utils/Logger: Honor (default) runtime limit in fallback logging state X-Git-Url: http://g0dil.de/git?a=commitdiff_plain;h=5d4e096b18209cab72810f359e520dc8728f8e73;p=senf.git Utils/Logger: Honor (default) runtime limit in fallback logging state git-svn-id: https://svn.berlios.de/svnroot/repos/senf/trunk@715 270642c3-0616-0410-b53a-bc976706d245 --- diff --git a/Utils/Logger/Config.hh b/Utils/Logger/Config.hh index 4bfb369..eac17e6 100644 --- a/Utils/Logger/Config.hh +++ b/Utils/Logger/Config.hh @@ -99,6 +99,8 @@ The routing statements are processed by the targets in order, the first matching rule will decide a log messages fate for that target. + + \section config_fallback Fallback routing 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 @@ -107,9 +109,9 @@ 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. + message arrives in this state, the message will be logged to the console if it is above the + default runtime limit of it's stream. 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 diff --git a/Utils/Logger/Target.cc b/Utils/Logger/Target.cc index f1dd507..9740cec 100644 --- a/Utils/Logger/Target.cc +++ b/Utils/Logger/Target.cc @@ -208,9 +208,11 @@ prefix_ void senf::log::detail::TargetRegistry::write(StreamBase const & stream, AreaBase const & area, unsigned level, std::string msg) { - if (fallbackRouting_) - static_cast(ConsoleTarget::instance()).v_write( - (*timeSource_)(), stream.v_name(), area.v_name(), level, msg ); + if (fallbackRouting_) { + if (level >= stream.defaultRuntimeLimit()) + static_cast(ConsoleTarget::instance()).v_write( + (*timeSource_)(), stream.v_name(), area.v_name(), level, msg ); + } else area.write( (*timeSource_)(), stream, level, msg ); }