From: Matthew Jordan Date: Mon, 12 Jan 2015 18:01:46 +0000 (+0000) Subject: main/syslog: Allow dynamic logs, such as security events, to log to the syslog X-Git-Tag: 14.0.0-beta1~1332 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=9065488ddd308ef4a3b46ad2da0a993e2e18c370;p=thirdparty%2Fasterisk.git main/syslog: Allow dynamic logs, such as security events, to log to the syslog The security event log uses a dynamic log level (SECURITY) that is registered with the Asterisk logging core. Unfortunately, the syslog would ignore log statements that had a dynamic log level associated with them. Because the syslog cannot handle ad hoc dynamic log levels, this patch treats any dynamic log entries sent to the syslog as logs with a level of NOTICE. ASTERISK-20744 #close Reported by: Michael Keuter Tested by: Michael L. Young, Jacek Konieczny patches: asterisk-20744-syslog-dynamic-logging_trunk.diff uploaded by Michael L. Young (license 5026) ........ Merged revisions 430506 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 430507 from http://svn.asterisk.org/svn/asterisk/branches/13 git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430508 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- diff --git a/include/asterisk/syslog.h b/include/asterisk/syslog.h index a0dc9e9cf4..45d351a731 100644 --- a/include/asterisk/syslog.h +++ b/include/asterisk/syslog.h @@ -28,6 +28,8 @@ extern "C" { #endif +#define ASTNUMLOGLEVELS 32 + /*! * \since 1.8 * \brief Maps a syslog facility name from a string to a syslog facility diff --git a/main/syslog.c b/main/syslog.c index 9171be40b4..51da69a8c3 100644 --- a/main/syslog.c +++ b/main/syslog.c @@ -163,8 +163,16 @@ static const int logger_level_to_syslog_map[] = { int ast_syslog_priority_from_loglevel(int level) { + /* First 16 levels are reserved for system use. + * Default to using LOG_NOTICE for dynamic logging. + */ + if (level >= 16 && level < ASTNUMLOGLEVELS) { + return LOG_NOTICE; + } + if (level < 0 || level >= ARRAY_LEN(logger_level_to_syslog_map)) { return -1; } + return logger_level_to_syslog_map[level]; }