X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=Utils%2FLogger%2FSyslogTarget.cc;h=40cdd5867709bc5d3d6d60c8f2b87913f1c43b03;hb=4195e3fc4bb545f2f7921396e2aec77edaa8c8c3;hp=61212adca6a60d4eda2aab2f4730a71d4e0de0da;hpb=778234c9180629e8985cf2395692124d957a9e5c;p=senf.git diff --git a/Utils/Logger/SyslogTarget.cc b/Utils/Logger/SyslogTarget.cc index 61212ad..40cdd58 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,40 @@ 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."); +} + +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////////////////////////////////////////