forked from orocos-toolchain/log4cpp
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathRemoteSyslogAppender.hh
More file actions
139 lines (123 loc) · 4.46 KB
/
RemoteSyslogAppender.hh
File metadata and controls
139 lines (123 loc) · 4.46 KB
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
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
/*
* SyslogAppender.hh
*
* Copyright 2001, LifeLine Networks BV (www.lifeline.nl). All rights reserved.
* Copyright 2001, Walter Stroebel. All rights reserved.
*
* See the COPYING file for the terms of usage and distribution.
*/
#ifndef _LOG4CPP_REMOTESYSLOGAPPENDER_HH
#define _LOG4CPP_REMOTESYSLOGAPPENDER_HH
#include <log4cpp/Portability.hh>
#include <string>
#include <stdarg.h>
#include <log4cpp/LayoutAppender.hh>
#include <log4cpp/Priority.hh>
#ifdef WIN32
#include <winsock2.h>
#else
#include <netinet/in.h>
#endif
#ifdef LOG4CPP_HAVE_SYSLOG
#include <syslog.h>
#else
/// from syslog.h
typedef enum {
LOG_EMERG = 0, ///< system is unusable
LOG_ALERT = 1, ///< action must be taken immediately
LOG_CRIT = 2, ///< critical conditions
LOG_ERR = 3, ///< error conditions
LOG_WARNING = 4, ///< warning conditions
LOG_NOTICE = 5, ///< normal but significant condition
LOG_INFO = 6, ///< informational
LOG_DEBUG = 7, ///< debug-level messages
} SyslogLevel;
typedef enum {
LOG_KERN = (0<<3), ///< kernel messages
LOG_USER = (1<<3), ///< random user-level messages
LOG_MAIL = (2<<3), ///< mail system
LOG_DAEMON = (3<<3), ///< system daemons
LOG_AUTH = (4<<3), ///< security/authorization messages
LOG_SYSLOG = (5<<3), ///< messages generated internally by syslogd
LOG_LPR = (6<<3), ///< line printer subsystem
LOG_NEWS = (7<<3), ///< network news subsystem
LOG_UUCP = (8<<3), ///< UUCP subsystem
LOG_CRON = (9<<3), ///< clock daemon
LOG_AUTHPRIV = (10<<3), ///< security/authorization messages (private)
LOG_FTP = (11<<3), ///< ftp daemon
/* other codes through 15 reserved for system use */
LOG_LOCAL0 = (16<<3), ///< reserved for local use
LOG_LOCAL1 = (17<<3), ///< reserved for local use
LOG_LOCAL2 = (18<<3), ///< reserved for local use
LOG_LOCAL3 = (19<<3), ///< reserved for local use
LOG_LOCAL4 = (20<<3), ///< reserved for local use
LOG_LOCAL5 = (21<<3), ///< reserved for local use
LOG_LOCAL6 = (22<<3), ///< reserved for local use
LOG_LOCAL7 = (23<<3), ///< reserved for local use
} SyslogFacility;
#endif
namespace log4cpp {
/**
* RemoteSyslogAppender sends LoggingEvents to a remote syslog system.
*
* Also see: draft-ietf-syslog-syslog-12.txt
**/
class LOG4CPP_EXPORT RemoteSyslogAppender : public LayoutAppender {
public:
/**
* Translates a log4cpp priority to a syslog priority
* @param priority The log4cpp priority.
* @returns the syslog priority.
**/
static int toSyslogPriority(Priority::Value priority);
/**
* Instantiate a RemoteSyslogAppender with given name and name and
* facility for syslog.
* @param name The name of the Appender
* @param syslogName The ident parameter in the openlog(3) call.
* @param relayer The IP address or hostname of a standard syslog host.
* @param facility The syslog facility to log to. Defaults to LOG_USER.
* Value '-1' implies to use the default.
* @param portNumber An alternative port number. Defaults to the
* standard syslog port number (514).
* Value '-1' implies to use the default.
**/
RemoteSyslogAppender(const std::string& name,
const std::string& syslogName,
const std::string& relayer,
int facility = LOG_USER,
int portNumber = 514);
virtual ~RemoteSyslogAppender();
/**
* Closes and reopens the socket.
**/
virtual bool reopen();
/**
* Closes the socket
**/
virtual void close();
protected:
/**
* Just creates the socket.
**/
virtual void open();
/**
* Sends a LoggingEvent to the remote syslog.
* @param event the LoggingEvent to log.
**/
virtual void _append(const LoggingEvent& event);
const std::string _syslogName;
const std::string _relayer;
int _facility;
int _portNumber;
#ifdef WIN32
SOCKET _socket;
#else
int _socket;
#endif
struct in_addr* _ipAddr;
private:
int _cludge;
};
}
#endif // _LOG4CPP_REMOTESYSLOGAPPENDER_HH