X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=Utils%2FLogger%2FTarget.cc;h=9c883dc979c2758bc9acc5b00548dab7e94a82c6;hb=f2f5d59e83863f3b513950173baee1b6da2aee3c;hp=ca0574912d4d519d21708b89bd5e12ef28cd3898;hpb=1a02a61e1e1515dca27577013cc7300ea5133fd5;p=senf.git diff --git a/Utils/Logger/Target.cc b/Utils/Logger/Target.cc index ca05749..9c883dc 100644 --- a/Utils/Logger/Target.cc +++ b/Utils/Logger/Target.cc @@ -272,6 +272,9 @@ prefix_ void senf::log::Target::updateRoutingCache(detail::StreamBase const * st updateRoutingCache(stream, i->second); return; } + if (! area->alive()) + // We are globally destructing and the area is gone already ... + return; unsigned limit (DISABLED::value); RIB::iterator i (rib_.begin()); RIB::iterator const i_end (rib_.end()); @@ -310,7 +313,7 @@ namespace { std::string formatLabel(std::string const & l) { if (l.empty()) - return "-"; + return "*"; if (l.size() > 29) return l.substr(l.size()-29); return l; @@ -320,7 +323,7 @@ namespace { prefix_ void senf::log::Target::consoleList(std::ostream & os) { static char const * levels[] = { - "none", "verbose", "notice", "message", "important", "critical", "fatal", "disabled" }; + "verbose", "verbose", "notice", "message", "important", "critical", "fatal", "disabled" }; boost::format fmt ("%2d %-29s %-29s %-9s %-6s\n"); os << fmt % "#" % "STREAM" % "AREA" % "LEVEL" % "ACTION"; @@ -407,6 +410,15 @@ prefix_ senf::log::detail::TargetRegistry::TargetRegistry() " message (senf::log::DefaultArea NOTICE) \"Test notice\";\n" " message (FATAL) \"Program on fire\";\n" " message (VERBOSE senf::log::Debug) \"Debug message\";"); + consoleDir_().add("self", senf::membind(&TargetRegistry::consoleSelf, this)) + .doc("Get the log directory of the current network client. Example usage:\n" + "\n" + "Just get the log config directory\n" + " $ /sys/log/self\n" + " \n" + "\n" + "Route all messages to the currently connected client\n" + " $ /sys/log/self { route (); }"); } prefix_ senf::log::detail::TargetRegistry::~TargetRegistry() @@ -440,6 +452,12 @@ prefix_ void senf::log::detail::TargetRegistry::consoleWrite(LogParameters pm, write(*pm.stream, *pm.area, pm.level, msg); } +prefix_ boost::shared_ptr +senf::log::detail::TargetRegistry::consoleSelf(std::ostream & os) +{ + return senf::console::Client::get(os).consoleDir().node().thisptr(); +} + /////////////////////////////////////////////////////////////////////////// // senf::log::detail::LogParameters