From 0e297d2134a3f0ecde11ea261d01eb6179adae0c Mon Sep 17 00:00:00 2001 From: Maciej Slodczyk Date: Thu, 2 Aug 2018 11:18:33 +0200 Subject: [PATCH] util: format out of order message as a log entry To prevent SDK log parsers errors, when an out of order message is printed, it has to be formatted in the same way as other entries. Change-Id: I004bb4a3d1dc58b1a81f80e668efe71f07987bdf Signed-off-by: Maciej Slodczyk --- src/shared/log_file.c | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/src/shared/log_file.c b/src/shared/log_file.c index 438f803..17d4b8d 100644 --- a/src/shared/log_file.c +++ b/src/shared/log_file.c @@ -228,13 +228,22 @@ int logfile_write_with_rotation(const struct logger_entry *e, struct log_file *f extract_timestamp(e, sort_by, &ts); if (ts.tv_sec < file->prev_sec || (ts.tv_sec == file->prev_sec && ts.tv_nsec < file->prev_nsec)) { - char buffer[512]; - int r = snprintf(buffer, sizeof buffer, "INFO: Following log entry could not be sorted and is out of order.\n"); - written_bytes = write(file->fd, buffer, r); + struct logger_entry_with_msg msg; + memcpy(&msg, e, sizeof *e); + int r = snprintf(msg.msg, sizeof msg.msg, "%s%c%s", log_buffer_get_tag(e), '\0', "INFO: Following log entry could not be sorted and is out of order."); - if (written_bytes < 0) { - ERR("unable to write out-of-order message %m"); + if (r < 0) { + ERR("unable to format out-of-order message %m"); written_bytes = 0; + } else { + msg.header.len = r + sizeof *e; + + written_bytes += log_print_log_line(file->format, file->fd, &msg.header); + + if (written_bytes < 0) { + ERR("unable to write out-of-order message %m"); + written_bytes = 0; + } } } -- 2.7.4