Timestamp the error log.
authorSteinar H. Gunderson <sgunderson@bigfoot.com>
Sun, 21 Apr 2013 19:48:00 +0000 (21:48 +0200)
committerSteinar H. Gunderson <sgunderson@bigfoot.com>
Sun, 21 Apr 2013 19:48:00 +0000 (21:48 +0200)
log.cpp

diff --git a/log.cpp b/log.cpp
index 753fbd4..d481cc4 100644 (file)
--- a/log.cpp
+++ b/log.cpp
@@ -68,6 +68,16 @@ void log(LogLevel log_level, const char *fmt, ...)
        vsnprintf(formatted_msg, sizeof(formatted_msg), fmt, ap);
        va_end(ap);
 
+       time_t now = time(NULL);
+       struct tm lt;
+       struct tm *ltime = localtime_r(&now, &lt);
+       char timestamp[1024];
+       if (ltime == NULL) {
+               strcpy(timestamp, "???");
+       } else {
+               strftime(timestamp, sizeof(timestamp), "%a, %d %b %Y %T %z", ltime);
+       }
+
        const char *log_level_str;
        int syslog_level;
 
@@ -91,7 +101,7 @@ void log(LogLevel log_level, const char *fmt, ...)
        // Log to stderr if logging hasn't been set up yet. Note that this means
        // that such messages will come even if there are no “error_log” lines.
        if (!logging_started) {
-               fprintf(stderr, "%s%s\n", log_level_str, formatted_msg);
+               fprintf(stderr, "[%s] %s%s\n", timestamp, log_level_str, formatted_msg);
                return;
        }
 
@@ -99,7 +109,7 @@ void log(LogLevel log_level, const char *fmt, ...)
                 if (log_destinations[i] == SYSLOG_FAKE_FILE) {
                        syslog(syslog_level, "%s", formatted_msg);
                } else {
-                       int err = fprintf(log_destinations[i], "%s%s\n", log_level_str, formatted_msg);
+                       int err = fprintf(log_destinations[i], "[%s] %s%s\n", timestamp, log_level_str, formatted_msg);
                        if (err < 0) {
                                perror("fprintf");
                        }