From: g0dil Date: Fri, 6 Feb 2009 22:39:43 +0000 (+0000) Subject: Utils/Logger: Implement areas and streams commands X-Git-Url: http://g0dil.de/git?a=commitdiff_plain;h=d8913e724b9e8d25890d62a177df02fc8f693921;p=senf.git Utils/Logger: Implement areas and streams commands git-svn-id: https://svn.berlios.de/svnroot/repos/senf/trunk@1103 270642c3-0616-0410-b53a-bc976706d245 --- diff --git a/Utils/Logger/Target.cc b/Utils/Logger/Target.cc index 22d5823..2760ae3 100644 --- a/Utils/Logger/Target.cc +++ b/Utils/Logger/Target.cc @@ -88,9 +88,13 @@ prefix_ senf::log::Target::Target(std::string const & name) std::string const &, std::string const &, unsigned, action_t, int)>(&Target::route), this))) - .arg("stream", "stream to match or empty to match any stream", + .arg("stream", + "stream to match or empty to match any stream\n" + " use '/sys/log/streams' to list all available streams", kw::default_value="") - .arg("area", "area to match or empty to match any area", + .arg("area", + "area to match or empty to match any area\n" + " use '/sys/log/areas' to list all available areas", kw::default_value="") .arg("level", "log level, one of: VERBOSE, NOTICE, MESSAGE, IMPORTANT, CRITICAL, FATAL", kw::default_value=local::VERBOSE) @@ -237,6 +241,26 @@ prefix_ senf::log::detail::TargetRegistry::TargetRegistry() : fallbackRouting_(true) { console::sysdir().add("log", consoleDir_()); + consoleDir_().add("areas", senf::membind(&TargetRegistry::consoleAreas, this)) + .doc("List all areas"); + consoleDir_().add("streams", senf::membind(&TargetRegistry::consoleStreams, this)) + .doc("List all streams"); +} + +prefix_ void senf::log::detail::TargetRegistry::consoleAreas(std::ostream & os) +{ + AreaRegistry::iterator i (AreaRegistry::instance().begin()); + AreaRegistry::iterator const i_end (AreaRegistry::instance().end()); + for (; i != i_end; ++i) + os << *i << "\n"; +} + +prefix_ void senf::log::detail::TargetRegistry::consoleStreams(std::ostream & os) +{ + StreamRegistry::iterator i (StreamRegistry::instance().begin()); + StreamRegistry::iterator const i_end (StreamRegistry::instance().end()); + for (; i != i_end; ++i) + os << *i << "\n"; } //////////////////////////////////////// diff --git a/Utils/Logger/Target.ih b/Utils/Logger/Target.ih index c6d4efb..4d65aa9 100644 --- a/Utils/Logger/Target.ih +++ b/Utils/Logger/Target.ih @@ -57,6 +57,9 @@ namespace detail { void registerTarget(Target * target, std::string const & name); void unregisterTarget(Target * target); + void consoleAreas(std::ostream & os); + void consoleStreams(std::ostream & os); + typedef std::set Targets; Targets targets_;