From 215b84c41ec93d77dbe47012bbe342fb6af7b382 Mon Sep 17 00:00:00 2001 From: Jim Jagielski Date: Fri, 24 Feb 2017 19:39:00 +0000 Subject: Support use of optional "tag" in syslog entries. Streamline the patch. PR 60525. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1784318 13f79535-47bb-0310-9956-ffa450edef68 --- modules/loggers/mod_syslog.c | 32 ++++++++++++++++++++++++++------ 1 file changed, 26 insertions(+), 6 deletions(-) (limited to 'modules/loggers') diff --git a/modules/loggers/mod_syslog.c b/modules/loggers/mod_syslog.c index cc4057315e..5ddce9616b 100644 --- a/modules/loggers/mod_syslog.c +++ b/modules/loggers/mod_syslog.c @@ -113,17 +113,37 @@ static void *syslog_error_log_init(apr_pool_t *p, server_rec *s) openlog(ap_server_argv0, LOG_NDELAY|LOG_CONS|LOG_PID, LOG_LOCAL7); } else { + /* s->error_fname could be [level]:[tag] (see #60525) */ + const char *tag; + apr_size_t flen; const TRANS *fac; - for (fac = facilities; fac->t_name; fac++) { - if (!strcasecmp(fname, fac->t_name)) { - openlog(ap_server_argv0, LOG_NDELAY|LOG_CONS|LOG_PID, - fac->t_val); - return success; + tag = strchr(fname, ':'); + if (tag) { + flen = tag - fname; + tag++; + if (*tag == '\0') { + tag = ap_server_argv0; } + } else { + flen = strlen(fname); + tag = ap_server_argv0; + } + if (flen == 0) { + /* Was something like syslog::foobar */ + openlog(tag, LOG_NDELAY|LOG_CONS|LOG_PID, LOG_LOCAL7); + } else { + for (fac = facilities; fac->t_name; fac++) { + if (!strncasecmp(fname, fac->t_name, flen)) { + openlog(tag, LOG_NDELAY|LOG_CONS|LOG_PID, + fac->t_val); + return success; + } + } + /* Huh? Invalid level name? */ + return NULL; } } - return success; } -- cgit v1.2.1