X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=Utils%2FLogger%2FParameters.ih;h=5370f9702dcfc80ca02cb20c08c21a8d7edd06ff;hb=ac86c2bb40746fbedf70a19af3307e5da642b04a;hp=d323241d2ce0f9917dd509c7085d26deebe71a56;hpb=61419d9a2e1060f7ede22fa19fd9d0b401bbc87a;p=senf.git diff --git a/Utils/Logger/Parameters.ih b/Utils/Logger/Parameters.ih index d323241..5370f97 100644 --- a/Utils/Logger/Parameters.ih +++ b/Utils/Logger/Parameters.ih @@ -33,15 +33,14 @@ #include #include #include +#include +#include +#include #include "../mpl.hh" #include "Config.hh" ///////////////////////////////ih.p//////////////////////////////////////// -#ifndef _senf_LOG_STREAM -# define _senf_LOG_STREAM std::cerr -#endif - namespace senf { namespace log { @@ -70,7 +69,7 @@ namespace detail { senf::mpl::rv<2> Parameters_select_(AreaBase *); template struct Parameters_ : public Base - { typedef Param area; }; + { typedef Param area; typedef Param area_base; }; senf::mpl::rv<3> Parameters_select_(LevelBase *); template @@ -99,7 +98,7 @@ namespace detail { typename boost::disable_if< boost::is_convertible >::type * = 0); template struct Parameters_ : public Base - { typedef typename Param::SENFLogArea area; }; + { typedef typename Param::SENFLogArea area; typedef Param area_base; }; #endif @@ -107,13 +106,19 @@ namespace detail { template struct Parameters : public Base { - static bool const compile_enabled = senf::log::Enabled< + typedef typename boost::mpl::if_c< Base::level::value == NONE::value, + typename Base::stream::defaultLevel, + typename Base::level >::type level; + + static bool const compileEnabled = senf::log::Enabled< typename Base::stream, - typename Base::area, - typename Base::level>::value; + typename Base::area_base, + level>::value; - static bool enabled() { return compile_enabled; } - static std::ostream & log_stream() { return _senf_LOG_STREAM; } + static bool enabled() { + return compileEnabled + && Base::area::instance().limit(Base::stream::instance()) <= level::value; + } }; /// Internal: Empty base class