[tor-commits] [tor/master] Add SyslogIdentityTag

nickm at torproject.org nickm at torproject.org
Wed Sep 30 16:34:22 UTC 2015


commit 1cf0d82280973a52403c160fa47a4fb06dfca6c3
Author: Peter Palfrader <peter at palfrader.org>
Date:   Wed Sep 30 17:54:56 2015 +0200

    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.
---
 changes/bug17194    |    7 +++++++
 doc/tor.1.txt       |    4 ++++
 src/common/log.c    |   13 ++++++++++---
 src/common/torlog.h |    2 +-
 src/or/config.c     |    3 ++-
 src/or/or.h         |    1 +
 6 files changed, 25 insertions(+), 5 deletions(-)

diff --git a/changes/bug17194 b/changes/bug17194
new file mode 100644
index 0000000..26549b3
--- /dev/null
+++ b/changes/bug17194
@@ -0,0 +1,7 @@
+  o Minor feature:
+    - 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".
+
diff --git a/doc/tor.1.txt b/doc/tor.1.txt
index 954c8fa..b04d57b 100644
--- a/doc/tor.1.txt
+++ b/doc/tor.1.txt
@@ -580,6 +580,10 @@ GENERAL OPTIONS
     If 1, Tor will overwrite logs at startup and in response to a HUP signal,
     instead of appending to them. (Default: 0)
 
+[[SyslogIdentityTag]] **SyslogIdentityTag** __tag__::
+    When logging to syslog, adds a tag to the syslog identity such that
+    log entries are marked with "Tor-__tag__".  (Default: none)
+
 [[SafeLogging]] **SafeLogging** **0**|**1**|**relay**::
     Tor can scrub potentially sensitive strings from log messages (e.g.
     addresses) by replacing them with the string [scrubbed]. This way logs can
diff --git a/src/common/log.c b/src/common/log.c
index e23691b..8d1c40c 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 67edf14..57679b5 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 fa860af..9b65add 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 4496cbc..a80cd55 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. */





More information about the tor-commits mailing list