qga: use fixed-length and GDateTime for log timestamp

The old code is kind of wrong. Say it's 1649309843.000001 seconds past
the epoch. Prints "1649309843.1". 9us later, it prints "1649309843.10".
Should really use %06lu for the microseconds part.

Use GDateTime instead, as suggested by Daniel.

Suggested-by: Markus Armbruster <armbru@redhat.com>
Suggested-by: Daniel P. Berrangé <berrange@redhat.com>
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
This commit is contained in:
Marc-André Lureau 2022-04-07 15:21:41 +04:00
parent d30c08dfe4
commit 55fa017072

View File

@ -328,11 +328,9 @@ static void ga_log(const gchar *domain, GLogLevelFlags level,
#else
if (level & s->log_level) {
#endif
gint64 t = g_get_real_time();
fprintf(s->log_file,
"%" G_GINT64_FORMAT ".%" G_GINT64_FORMAT
": %s: %s\n", t / G_USEC_PER_SEC, t % G_USEC_PER_SEC,
level_str, msg);
g_autoptr(GDateTime) now = g_date_time_new_now_utc();
g_autofree char *nowstr = g_date_time_format(now, "%s.%f");
fprintf(s->log_file, "%s: %s: %s\n", nowstr, level_str, msg);
fflush(s->log_file);
}
}