00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00026 #ifndef HH_SENF_Utils_Logger_SyslogTarget_
00027 #define HH_SENF_Utils_Logger_SyslogTarget_ 1
00028
00029
00030 #include <syslog.h>
00031 #include <boost/shared_ptr.hpp>
00032 #include "Target.hh"
00033
00034
00035
00036
00037 namespace senf {
00038
00039 namespace console { class DirectoryNode; }
00040
00041 namespace log {
00042
00077 class SyslogTarget
00078 : public Target
00079 {
00080 public:
00081
00083
00084
00085 explicit SyslogTarget(int facility = LOG_USER);
00086
00087
00088
00089
00090 private:
00091 void v_write(time_type timestamp, std::string const & stream,
00092 std::string const & area, unsigned level,
00093 std::string const & message);
00094
00095 int facility_;
00096
00097 public:
00098 static int const LEVELMAP[8];
00099
00100 enum LogFacility {
00101 AUTHPRIV = LOG_AUTHPRIV,
00102 CRON = LOG_CRON,
00103 DAEMON = LOG_DAEMON,
00104 FTP = LOG_FTP,
00105 KERN = LOG_KERN,
00106 LOCAL0 = LOG_LOCAL0,
00107 LOCAL1 = LOG_LOCAL1,
00108 LOCAL2 = LOG_LOCAL2,
00109 LOCAL3 = LOG_LOCAL3,
00110 LOCAL4 = LOG_LOCAL4,
00111 LOCAL5 = LOG_LOCAL5,
00112 LOCAL6 = LOG_LOCAL6,
00113 LOCAL7 = LOG_LOCAL7,
00114 LPR = LOG_LPR,
00115 MAIL = LOG_MAIL,
00116 NEWS = LOG_NEWS,
00117 SYSLOG = LOG_SYSLOG,
00118 USER = LOG_USER,
00119 UUCP = LOG_UUCP
00120 };
00121
00122 private:
00123 struct RegisterConsole {
00124 RegisterConsole();
00125 static boost::shared_ptr<console::DirectoryNode> create(
00126 LogFacility facility);
00127 static RegisterConsole instance;
00128 };
00129 };
00130
00131 }}
00132
00133
00134 #include "SyslogTarget.cci"
00135
00136
00137 #endif
00138
00139
00140
00141
00142
00143
00144
00145
00146
00147
00148