From c61cd050f9b6475ea128a1da02e88b284ac509b5 Mon Sep 17 00:00:00 2001 From: Florian Wehner Date: Thu, 7 Mar 2019 20:14:55 -0500 Subject: Reformatting log timestamp to include time-zone The time logged is currently given as localtime without any timezone information. This is confusing in various scenarios. Examples: * If one is travelling across time-zones and the timestamps in the log appear out of order. * Comparing dates with `datediff` gives an offset by the time-zone This patch would reformat the time-stamp to a full ISO-8601 version. It includes the 'T' separating date and time including seconds. Old: [2019-03-04 16:15] New: [2019-03-04T16:15:45-05:00] Signed-off-by: Florian Wehner Signed-off-by: Allan McRae --- lib/libalpm/log.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/lib/libalpm/log.c b/lib/libalpm/log.c index e46ad3c3..d8842a55 100644 --- a/lib/libalpm/log.c +++ b/lib/libalpm/log.c @@ -22,6 +22,7 @@ #include #include #include +#include /* libalpm */ #include "log.h" @@ -38,11 +39,12 @@ static int _alpm_log_leader(FILE *f, const char *prefix) { time_t t = time(NULL); struct tm *tm = localtime(&t); + int length = 32; + char timestamp[length]; /* Use ISO-8601 date format */ - return fprintf(f, "[%04d-%02d-%02d %02d:%02d] [%s] ", - tm->tm_year + 1900, tm->tm_mon + 1, tm->tm_mday, - tm->tm_hour, tm->tm_min, prefix); + strftime(timestamp,length,"%FT%X%z", tm); + return fprintf(f, "[%s] [%s] ", timestamp, prefix); } /** A printf-like function for logging. -- cgit v1.2.3-54-g00ecf