diff options
author | Peter Palfrader <peter@palfrader.org> | 2015-09-30 17:54:56 +0200 |
---|---|---|
committer | Nick Mathewson <nickm@torproject.org> | 2015-09-30 18:34:15 +0200 |
commit | 1cf0d82280973a52403c160fa47a4fb06dfca6c3 (patch) | |
tree | c22b791c38b3cb06d7abe7186d5839bc7fabf792 /src | |
parent | 0d43a54d1c9c1be24c33eed79029d1bd44a6a28a (diff) | |
download | tor-1cf0d82280973a52403c160fa47a4fb06dfca6c3.tar.gz tor-1cf0d82280973a52403c160fa47a4fb06dfca6c3.zip |
Add SyslogIdentityTag
When logging to syslog, allow a tag to be added to the syslog identity
("Tor"), i.e. the string prepended to every log message. The tag can be
configured by setting SyslogIdentityTag and defaults to none. Setting
it to "foo" will cause logs to be tagged as "Tor-foo". Closes: #17194.
Diffstat (limited to 'src')
-rw-r--r-- | src/common/log.c | 13 | ||||
-rw-r--r-- | src/common/torlog.h | 2 | ||||
-rw-r--r-- | src/or/config.c | 3 | ||||
-rw-r--r-- | src/or/or.h | 1 |
4 files changed, 14 insertions, 5 deletions
diff --git a/src/common/log.c b/src/common/log.c index e23691b6ab..8d1c40c36e 100644 --- a/src/common/log.c +++ b/src/common/log.c @@ -1099,12 +1099,19 @@ add_file_log(const log_severity_list_t *severity, const char *filename, * Add a log handler to send messages to they system log facility. */ int -add_syslog_log(const log_severity_list_t *severity) +add_syslog_log(const log_severity_list_t *severity, const char* syslog_identity_tag) { logfile_t *lf; - if (syslog_count++ == 0) + if (syslog_count++ == 0) { /* This is the first syslog. */ - openlog("Tor", LOG_PID | LOG_NDELAY, LOGFACILITY); + static char buf[256]; + if (syslog_identity_tag) { + tor_snprintf(buf, sizeof(buf), "Tor-%s", syslog_identity_tag); + } else { + tor_snprintf(buf, sizeof(buf), "Tor"); + } + openlog(buf, LOG_PID | LOG_NDELAY, LOGFACILITY); + } lf = tor_malloc_zero(sizeof(logfile_t)); lf->fd = -1; diff --git a/src/common/torlog.h b/src/common/torlog.h index 67edf14c04..57679b5f5c 100644 --- a/src/common/torlog.h +++ b/src/common/torlog.h @@ -135,7 +135,7 @@ void add_stream_log(const log_severity_list_t *severity, const char *name, int add_file_log(const log_severity_list_t *severity, const char *filename, const int truncate); #ifdef HAVE_SYSLOG_H -int add_syslog_log(const log_severity_list_t *severity); +int add_syslog_log(const log_severity_list_t *severity, const char* syslog_identity_tag); #endif int add_callback_log(const log_severity_list_t *severity, log_callback cb); void logs_set_domain_logging(int enabled); diff --git a/src/or/config.c b/src/or/config.c index fa860af337..9b65addeeb 100644 --- a/src/or/config.c +++ b/src/or/config.c @@ -312,6 +312,7 @@ static config_var_t option_vars_[] = { V(LogMessageDomains, BOOL, "0"), V(LogTimeGranularity, MSEC_INTERVAL, "1 second"), V(TruncateLogFile, BOOL, "0"), + V(SyslogIdentityTag, STRING, NULL), V(LongLivedPorts, CSV, "21,22,706,1863,5050,5190,5222,5223,6523,6667,6697,8300"), VAR("MapAddress", LINELIST, AddressMap, NULL), @@ -4937,7 +4938,7 @@ options_init_logs(const or_options_t *old_options, or_options_t *options, !strcasecmp(smartlist_get(elts,0), "syslog")) { #ifdef HAVE_SYSLOG_H if (!validate_only) { - add_syslog_log(severity); + add_syslog_log(severity, options->SyslogIdentityTag); } #else log_warn(LD_CONFIG, "Syslog is not supported on this system. Sorry."); diff --git a/src/or/or.h b/src/or/or.h index 4496cbcec3..a80cd55b53 100644 --- a/src/or/or.h +++ b/src/or/or.h @@ -3424,6 +3424,7 @@ typedef struct { * each log message occurs? */ int TruncateLogFile; /**< Boolean: Should we truncate the log file before we start writing? */ + char *SyslogIdentityTag; /**< Identity tag to add for syslog logging. */ char *DebugLogFile; /**< Where to send verbose log messages. */ char *DataDirectory; /**< OR only: where to store long-term data. */ |