X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=Utils%2FLogger%2FParameters.ih;h=4941b79191b0975546570f9a73beb989dfa8de3b;hb=f2f5d59e83863f3b513950173baee1b6da2aee3c;hp=d323241d2ce0f9917dd509c7085d26deebe71a56;hpb=61419d9a2e1060f7ede22fa19fd9d0b401bbc87a;p=senf.git diff --git a/Utils/Logger/Parameters.ih b/Utils/Logger/Parameters.ih index d323241..4941b79 100644 --- a/Utils/Logger/Parameters.ih +++ b/Utils/Logger/Parameters.ih @@ -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 @@ -23,8 +23,8 @@ /** \file \brief Parameters internal header */ -#ifndef IH_Parameters_ -#define IH_Parameters_ 1 +#ifndef IH_SENF_Utils_Logger_Parameters_ +#define IH_SENF_Utils_Logger_Parameters_ 1 // Custom includes #include @@ -33,15 +33,15 @@ #include #include #include +#include +#include +#include #include "../mpl.hh" #include "Config.hh" +#include "Target.hh" ///////////////////////////////ih.p//////////////////////////////////////// -#ifndef _senf_LOG_STREAM -# define _senf_LOG_STREAM std::cerr -#endif - namespace senf { namespace log { @@ -70,7 +70,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 +99,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 +107,20 @@ namespace detail { template struct Parameters : public Base { - static bool const compile_enabled = senf::log::Enabled< - typename Base::stream, - typename Base::area, - typename Base::level>::value; + typedef typename boost::mpl::if_c< Base::level::value == NONE::value, + typename Base::stream::defaultLevel, + typename Base::level >::type level; - static bool enabled() { return compile_enabled; } - static std::ostream & log_stream() { return _senf_LOG_STREAM; } + static bool const compileEnabled = senf::log::Enabled< + typename Base::stream, + typename Base::area_base, + level>::value; + + static bool enabled() { + return compileEnabled + && ( senf::log::detail::TargetRegistry::instance().fallbackRouting() || + Base::area::instance().limit(Base::stream::instance()) <= level::value ); + } }; /// Internal: Empty base class