[pacman-dev] [PATCH] Reformatting log timestamp to include time-zone
Andrew Gregory
andrew.gregory.8 at gmail.com
Fri Mar 8 00:17:48 UTC 2019
On 03/04/19 at 04:46pm, Florian Wehner wrote:
> The time logged is currently given as localtime without any time-zone
> 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. This could be removed.
>
> Old: [2019-03-04 16:15]
> New: [2019-03-04T16:15-05:00]
>
> Signed-off-by: Florian Wehner <florian at whnr.de>
> ---
> lib/libalpm/log.c | 10 ++++++++--
> 1 file changed, 8 insertions(+), 2 deletions(-)
>
> diff --git a/lib/libalpm/log.c b/lib/libalpm/log.c
> index e46ad3c3..cf869a08 100644
> --- a/lib/libalpm/log.c
> +++ b/lib/libalpm/log.c
> @@ -20,6 +20,7 @@
>
> #include <stdio.h>
> #include <stdarg.h>
> +#include <stdlib.h>
> #include <errno.h>
> #include <syslog.h>
>
> @@ -37,12 +38,17 @@
> static int _alpm_log_leader(FILE *f, const char *prefix)
> {
> time_t t = time(NULL);
> + int tz_h, tz_m;
> struct tm *tm = localtime(&t);
>
> + /* Calculate the timezone offset ±hh:mm */
> + tz_h = tm->tm_gmtoff/3600;
> + tz_m = abs(tm->tm_gmtoff - (tz_h*3600))/60;
What is tm_gmtoff? I can't find any mention of it in any
documentation.
> /* Use ISO-8601 date format */
> - return fprintf(f, "[%04d-%02d-%02d %02d:%02d] [%s] ",
> + return fprintf(f, "[%04d-%02d-%02dT%02d:%02d%+03d:%02d] [%s] ",
> tm->tm_year + 1900, tm->tm_mon + 1, tm->tm_mday,
> - tm->tm_hour, tm->tm_min, prefix);
> + tm->tm_hour, tm->tm_min, tz_h, tz_m, prefix);
> }
>
> /** A printf-like function for logging.
> --
> 2.21.0
--
apg
More information about the pacman-dev
mailing list