X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=Utils%2FLogger%2FSyslogTarget.cc;h=b4ba15d7f166da185ac9be6c0ed73cbbdef113c0;hb=bd9f9d3fd6fbcff0112a7bf48ab9284da9576b11;hp=61212adca6a60d4eda2aab2f4730a71d4e0de0da;hpb=778234c9180629e8985cf2395692124d957a9e5c;p=senf.git diff --git a/Utils/Logger/SyslogTarget.cc b/Utils/Logger/SyslogTarget.cc index 61212ad..b4ba15d 100644 --- a/Utils/Logger/SyslogTarget.cc +++ b/Utils/Logger/SyslogTarget.cc @@ -27,12 +27,13 @@ //#include "SyslogTarget.ih" // Custom includes +#include "../Console/Console.hh" //#include "SyslogTarget.mpp" #define prefix_ ///////////////////////////////cc.p//////////////////////////////////////// -int const senf::log::SyslogTarget::LEVELMAP_[8] = { +int const senf::log::SyslogTarget::LEVELMAP[8] = { 0, LOG_DEBUG, LOG_INFO, LOG_NOTICE, LOG_WARNING, LOG_CRIT, LOG_EMERG, 0 }; prefix_ void senf::log::SyslogTarget::v_write(time_type timestamp, std::string const & stream, @@ -40,9 +41,52 @@ prefix_ void senf::log::SyslogTarget::v_write(time_type timestamp, std::string c std::string const & message) { if (area != "senf::log::DefaultArea") - syslog(facility_ | LEVELMAP_[level], "[%s] %s", area.c_str(), message.c_str()); + syslog(facility_ | LEVELMAP[level], "[%s] %s", area.c_str(), message.c_str()); else - syslog(facility_ | LEVELMAP_[level], "%s", message.c_str()); + syslog(facility_ | LEVELMAP[level], "%s", message.c_str()); +} + +namespace senf { +namespace log { + + SENF_CONSOLE_REGISTER_ENUM_MEMBER(SyslogTarget, LogFacility, + (AUTHPRIV)(CRON)(DAEMON)(FTP)(KERN)(LPR)(MAIL)(NEWS)(SYSLOG) + (USER)(UUCP)(LOCAL0)(LOCAL1)(LOCAL2)(LOCAL3)(LOCAL4)(LOCAL5) + (LOCAL6)(LOCAL7)); + +}} + +prefix_ senf::log::SyslogTarget::RegisterConsole::RegisterConsole() +{ + namespace kw = senf::console::kw; + + detail::TargetRegistry::instance().consoleDir().add("syslog-target",&RegisterConsole::create) + .arg("facility", "syslog facility to send messages to. One of\n" + " AUTHPRIV CRON DAEMON FTP KERN LPR MAIL NEWS SYSLOG USER\n" + " UUCP LOCAL0 LOCAL1 LOCAL2 LOCAL3 LOCAL4 LOCAL5 LOCAL6 LOCAL7", + kw::default_value = USER) + .doc("Create new syslog target. Examples:\n" + "\n" + "Create new syslog target\n" + " $ syslog-target\n" + " \n" + "\n" + "In a configuration file, create new syslog target and set some parameters (If\n" + "written on one line, this works at the console too:\n" + " /sys/log/syslog-target LOCAL2 {\n" + " route (IMPORTANT); # route all important messages\n" + " timeFormat \"\"; # use non-formatted time format\n" + " showArea false; # don't show log area\n" + " }\n"); +} + +prefix_ boost::shared_ptr +senf::log::SyslogTarget::RegisterConsole::create(LogFacility facility) +{ + std::auto_ptr tp (new SyslogTarget(facility)); + Target & target (*tp.get()); + detail::TargetRegistry::instance().dynamicTarget(tp); + return target.consoleDir().node().thisptr(); } ///////////////////////////////cc.e////////////////////////////////////////