blob: c2716a9b1a74ab692bac04a87bcf3ac44181d0cd (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
|
#include "SyslogLogSink.hpp"
#ifndef _WIN32
#include <syslog.h>
#else
#include "win32/syslog_win32.h"
#endif
using namespace std;
SyslogLogSink::SyslogLogSink( const LogLevel level, const string &ident, const string &facility )
: LogSink( level ), m_ident( ident ), m_facility( facility )
{
openlog( m_ident.c_str( ), LOG_PID, facilityFromString( m_facility ) );
}
SyslogLogSink::~SyslogLogSink( )
{
closelog( );
}
void SyslogLogSink::log( const LogLevel level, const string &msg )
{
if( level > reportingLevel( ) ) return;
syslog( levelToSyslogLevel( level ), "%s", msg.c_str( ) );
}
int SyslogLogSink::levelToSyslogLevel( const LogLevel level )
{
switch( level ) {
case logFATAL: return LOG_ALERT;
case logCRITICAL: return LOG_CRIT;
case logERROR: return LOG_ERR;
case logWARNING: return LOG_WARNING;
case logNOTICE: return LOG_NOTICE;
case logINFO: return LOG_INFO;
case logDEBUG:
case logDEBUG1:
case logDEBUG2:
case logDEBUG3:
case logDEBUG4: return LOG_DEBUG;
case logNONE:
default:
LOG( logWARNING ) << "Unknown log level '" << level << "'. Using LOG)ERR level as syslog log level.";
return LOG_ERR;
}
}
int SyslogLogSink::facilityFromString( const std::string &facility )
{
if( facility == "kern" ) return LOG_KERN;
else if( facility == "user" ) return LOG_USER;
else if( facility == "mail" ) return LOG_MAIL;
else if( facility == "daemon" ) return LOG_DAEMON;
else if( facility == "auth" ) return LOG_AUTH;
else if( facility == "syslog" ) return LOG_SYSLOG;
else if( facility == "lpr" ) return LOG_LPR;
else if( facility == "news" ) return LOG_NEWS;
else if( facility == "uucp" ) return LOG_UUCP;
else if( facility == "cron" ) return LOG_CRON;
#ifdef LOG_AUTHPRIV
else if( facility == "authpriv" ) return LOG_AUTHPRIV;
#endif
#ifdef LOG_FTP
else if( facility == "ftp" ) return LOG_FTP;
#endif
#ifdef LOG_NTP
else if( facility == "ntp" ) return LOG_NTP;
#endif
#ifdef LOG_SECURITY
else if( facility == "security" ) return LOG_SECURITY;
#endif
#ifdef LOG_CONSOLE
else if( facility == "console" ) return LOG_CONSOLE;
#endif
#ifdef LOG_AUDIT
else if( facility == "audit" ) return LOG_AUDIT;
#endif
else if( facility == "local0" ) return LOG_LOCAL0;
else if( facility == "local1" ) return LOG_LOCAL1;
else if( facility == "local2" ) return LOG_LOCAL2;
else if( facility == "local3" ) return LOG_LOCAL3;
else if( facility == "local4" ) return LOG_LOCAL4;
else if( facility == "local5" ) return LOG_LOCAL5;
else if( facility == "local6" ) return LOG_LOCAL6;
else if( facility == "local7" ) return LOG_LOCAL7;
else return LOG_USER;
}
|