X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=Utils%2FLogger%2FSyslogTarget.cc;h=b4ba15d7f166da185ac9be6c0ed73cbbdef113c0;hb=bd9f9d3fd6fbcff0112a7bf48ab9284da9576b11;hp=6b175c65f1c4b00c3b38e9c5826171a56155e1c2;hpb=adcd3672d48f44103f2b4abc6417acf5d0107978;p=senf.git diff --git a/Utils/Logger/SyslogTarget.cc b/Utils/Logger/SyslogTarget.cc index 6b175c6..b4ba15d 100644 --- a/Utils/Logger/SyslogTarget.cc +++ b/Utils/Logger/SyslogTarget.cc @@ -27,6 +27,7 @@ //#include "SyslogTarget.ih" // Custom includes +#include "../Console/Console.hh" //#include "SyslogTarget.mpp" #define prefix_ @@ -45,6 +46,49 @@ prefix_ void senf::log::SyslogTarget::v_write(time_type timestamp, std::string c 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//////////////////////////////////////// #undef prefix_ //#include "SyslogTarget.mpp"