X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=Utils%2FLogger%2FSyslogTarget.hh;h=0049f59fd46661a79b7f2ebb6a3ce398e41dadfb;hb=8da6e83b001f0ae8383af7eb4b3e3a079178a777;hp=bb1aa6c96e5829fc61efac4dba2f710d4524d1f9;hpb=778234c9180629e8985cf2395692124d957a9e5c;p=senf.git diff --git a/Utils/Logger/SyslogTarget.hh b/Utils/Logger/SyslogTarget.hh index bb1aa6c..0049f59 100644 --- a/Utils/Logger/SyslogTarget.hh +++ b/Utils/Logger/SyslogTarget.hh @@ -23,8 +23,8 @@ /** \file \brief SyslogTarget public header */ -#ifndef HH_SyslogTarget_ -#define HH_SyslogTarget_ 1 +#ifndef HH_SENF_Utils_Logger_SyslogTarget_ +#define HH_SENF_Utils_Logger_SyslogTarget_ 1 // Custom includes #include @@ -36,15 +36,45 @@ namespace senf { namespace log { + /** \brief Log target writing to the syslog + + The SyslogTarget will send all log messages to the syslog at the given facility. + + \code + senf::log::SyslogTarget syslog; + + // Route all messages to the syslog + syslog.route(); + \endcode + + Valid facility values (taken from man 3 syslog): + \par "" + LOG_AUTHPRIV, LOG_CRON, LOG_DAEMON, LOG_FTP, + LOG_KERN, LOG_LOCAL0, LOG_LOCAL1, LOG_LOCAL2, + LOG_LOCAL3, LOG_LOCAL4, LOG_LOCAL5, LOG_LOCAL6, + LOG_LOCAL7, LOG_LPR, LOG_MAIL, LOG_NEWS, + LOG_SYSLOG, LOG_USER, LOG_UUCP + + The default facility is LOG_USER. + + The SENF log levels are mapped to syslog levels in the following way: + + + + + + + + +
senf::log::VERBOSE \c LOG_DEBUG
senf::log::NOTICE \c LOG_INFO
senf::log::MESSAGE \c LOG_NOTICE
senf::log::IMPORTANT \c LOG_WARNING
senf::log::CRITICAL \c LOG_CRIT
senf::log::FATAL \c LOG_EMERG
+ + \ingroup targets + */ class SyslogTarget : public Target { public: /////////////////////////////////////////////////////////////////////////// - // Types - - - /////////////////////////////////////////////////////////////////////////// ///\name Structors and default members ///@{ @@ -53,14 +83,44 @@ namespace log { ///@} /////////////////////////////////////////////////////////////////////////// - protected: + private: void v_write(time_type timestamp, std::string const & stream, std::string const & area, unsigned level, std::string const & message); - private: int facility_; - static int const LEVELMAP_[8]; + + public: + static int const LEVELMAP[8]; + + enum LogFacility { + AUTHPRIV = LOG_AUTHPRIV, + CRON = LOG_CRON, + DAEMON = LOG_DAEMON, + FTP = LOG_FTP, + KERN = LOG_KERN, + LOCAL0 = LOG_LOCAL0, + LOCAL1 = LOG_LOCAL1, + LOCAL2 = LOG_LOCAL2, + LOCAL3 = LOG_LOCAL3, + LOCAL4 = LOG_LOCAL4, + LOCAL5 = LOG_LOCAL5, + LOCAL6 = LOG_LOCAL6, + LOCAL7 = LOG_LOCAL7, + LPR = LOG_LPR, + MAIL = LOG_MAIL, + NEWS = LOG_NEWS, + SYSLOG = LOG_SYSLOG, + USER = LOG_USER, + UUCP = LOG_UUCP + }; + + private: + struct RegisterConsole { + RegisterConsole(); + static void create(LogFacility facility); + static RegisterConsole instance; + }; }; }}