36 #include "blocxx/BLOCXX_config.h"
46 #if defined(BLOCXX_WIN32)
47 #define snprintf _snprintf // stupid windoze...
58 static char log_ident[NAME_MAX];
60 static char log_ident[255];
65 const char *
const name;
69 static struct Facilities facilities[] =
75 {
"authpriv", LOG_AUTHPRIV },
81 {
"daemon", LOG_DAEMON },
102 {
"uucp", LOG_UUCP },
105 {
"local0", LOG_LOCAL0 },
108 {
"local1", LOG_LOCAL1 },
111 {
"local2", LOG_LOCAL2 },
114 {
"local3", LOG_LOCAL3 },
117 {
"local4", LOG_LOCAL4 },
120 {
"local5", LOG_LOCAL5 },
123 {
"local6", LOG_LOCAL6 },
126 {
"local7", LOG_LOCAL7 },
138 const String& identity,
139 const String& facility)
142 if( identity.empty() || identity.isSpaces())
145 "SyslogAppender: Empty syslog identity name"
148 if( facility.empty())
151 "SyslogAppender: Empty syslog facility name"
155 struct Facilities *f = facilities;
156 for( ; f->name != NULL; f++)
158 if( facility.equals(f->name))
164 Format(
"SyslogAppender: Unknown syslog facility name: %1",
176 ::snprintf( log_ident,
sizeof(log_ident),
"%s", identity.c_str());
177 openlog( log_ident, LOG_CONS, f->code);
178 calledOpenLog =
true;
183 SyslogAppender::~SyslogAppender() {}
187 SyslogAppender::doProcessLogMessage(
const String& formattedMessage,
const LogMessage& message)
const
190 if (message.category.equalsIgnoreCase(Logger::STR_FATAL_CATEGORY))
192 syslogPriority = LOG_CRIT;
194 else if (message.category.equalsIgnoreCase(Logger::STR_ERROR_CATEGORY))
196 syslogPriority = LOG_ERR;
198 else if (message.category.equalsIgnoreCase(Logger::STR_WARNING_CATEGORY))
200 syslogPriority = LOG_WARNING;
202 else if (message.category.equalsIgnoreCase(Logger::STR_INFO_CATEGORY))
204 syslogPriority = LOG_INFO;
206 else if (message.category.equalsIgnoreCase(Logger::STR_DEBUG_CATEGORY)
207 || message.category.equalsIgnoreCase(Logger::STR_DEBUG2_CATEGORY)
208 || message.category.equalsIgnoreCase(Logger::STR_DEBUG3_CATEGORY))
210 syslogPriority = LOG_DEBUG;
214 syslogPriority = LOG_INFO;
219 for (
size_t i = 0;
i < a.
size(); ++
i)
221 char format[] =
"%s";
222 syslog( syslogPriority, format, a[
i].c_str() );
227 bool SyslogAppender::calledOpenLog =
false;