summaryrefslogtreecommitdiff
path: root/modules/loggers
diff options
context:
space:
mode:
authorJim Jagielski <jim@apache.org>2017-02-24 19:39:00 +0000
committerJim Jagielski <jim@apache.org>2017-02-24 19:39:00 +0000
commit215b84c41ec93d77dbe47012bbe342fb6af7b382 (patch)
treec6f292defdde5abbae8dce6960ec4f5e8acba011 /modules/loggers
parent09e5e64a44d985ffcb19ccf2889e35976796eefc (diff)
downloadhttpd-215b84c41ec93d77dbe47012bbe342fb6af7b382.tar.gz
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
Diffstat (limited to 'modules/loggers')
-rw-r--r--modules/loggers/mod_syslog.c32
1 files changed, 26 insertions, 6 deletions
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;
}