X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=Utils%2FLogger%2FTarget.ih;h=1ad164a7eefff020bd15150cd654d40edf04d248;hb=8da6e83b001f0ae8383af7eb4b3e3a079178a777;hp=bc48061c03dc514a2564f344669d26723dfe5bdd;hpb=4e05bff7db89ed83bfe3846c56273c7c91c6be59;p=senf.git diff --git a/Utils/Logger/Target.ih b/Utils/Logger/Target.ih index bc48061..1ad164a 100644 --- a/Utils/Logger/Target.ih +++ b/Utils/Logger/Target.ih @@ -31,6 +31,7 @@ #include #include #include "../Console/LazyDirectory.hh" +#include "../Console/Parse.hh" ///////////////////////////////ih.p//////////////////////////////////////// @@ -38,6 +39,20 @@ namespace senf { namespace log { namespace detail { + struct LogParameters { + StreamBase const * stream; + AreaBase const * area; + unsigned level; + void clear(); + void setDefaults(); + static LogParameters defaultParameters(); + }; + + std::ostream & operator<<(std::ostream & os, LogParameters const & pm); + + void senf_console_parse_argument(console::ParseCommandInfo::TokensRange const & tokens, + LogParameters & out); + /** \brief Internal: Target registry */ class TargetRegistry : public senf::singleton @@ -60,16 +75,21 @@ namespace detail { void routed(); bool fallbackRouting(); + senf::console::ScopedDirectory<> & consoleDir(); + + void dynamicTarget(std::auto_ptr target); + private: TargetRegistry(); + ~TargetRegistry(); void registerTarget(Target * target, std::string const & name); void unregisterTarget(Target * target); void consoleAreas(std::ostream & os); void consoleStreams(std::ostream & os); - void consoleWrite(std::string const & stream, std::string const & area, Level level, - std::string const & msg); + void consoleWrite(LogParameters parameters, std::string const & msg); + void consoleRemoveTarget(Target * target); typedef std::set Targets; Targets targets_; @@ -77,6 +97,8 @@ namespace detail { bool fallbackRouting_; console::LazyDirectory consoleDir_; + + Targets dynamicTargets_; friend class senf::log::Target; friend class senf::singleton;