X-Git-Url: https://git.sesse.net/?p=cubemap;a=blobdiff_plain;f=log.cpp;h=b20a89f89b6f75678c3eb55f04c1e5362f231d1c;hp=753fbd4f6f3239364a84a4a103453036817071b8;hb=bfc1a54cf84bb1784c14bd4f5acbb500460e35b5;hpb=5cd46e39b4063d94f6dc559ae350beeb8406a8f9 diff --git a/log.cpp b/log.cpp index 753fbd4..b20a89f 100644 --- a/log.cpp +++ b/log.cpp @@ -5,6 +5,7 @@ #include #include #include +#include #include #include @@ -68,6 +69,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, <); + 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 +102,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 +110,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"); }