util: format out of order message as a log entry 90/185790/4
authorMaciej Slodczyk <m.slodczyk2@partner.samsung.com>
Thu, 2 Aug 2018 09:18:33 +0000 (11:18 +0200)
committerMaciej Slodczyk <m.slodczyk2@partner.samsung.com>
Wed, 22 Aug 2018 09:14:30 +0000 (11:14 +0200)
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 <m.slodczyk2@partner.samsung.com>
src/shared/log_file.c

index 438f803..17d4b8d 100644 (file)
@@ -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;
+                       }
                }
        }