log: Don't prefix log file messages with time and severity if they're continuations

In fecb1b65b1 ("log: Don't prefix message with timestamp on --debug
if it's a continuation"), I fixed this for --debug on standard error,
but not for log files: if messages are continuations, they shouldn't
be prefixed by timestamp and severity.

Otherwise, we'll print stuff like this:

  0.0028: ERROR:   Receive error on guest connection, reset0.0028:  ERROR:   : Bad file descriptor

Signed-off-by: Stefano Brivio <sbrivio@redhat.com>
Reviewed-by: David Gibson <david@gibson.dropbear.id.au>
This commit is contained in:
Stefano Brivio 2024-09-03 23:45:53 +02:00
parent 38363964fc
commit 0ea60e5a77

12
log.c
View file

@ -224,19 +224,23 @@ static int logfile_rotate(int fd, const struct timespec *now)
/** /**
* logfile_write() - Write entry to log file, trigger rotation if full * logfile_write() - Write entry to log file, trigger rotation if full
* @newline: Append newline at the end of the message, if missing * @newline: Append newline at the end of the message, if missing
* @cont: Continuation of a previous message, on the same line
* @pri: Facility and level map, same as priority for vsyslog() * @pri: Facility and level map, same as priority for vsyslog()
* @now: Timestamp * @now: Timestamp
* @format: Same as vsyslog() format * @format: Same as vsyslog() format
* @ap: Same as vsyslog() ap * @ap: Same as vsyslog() ap
*/ */
static void logfile_write(bool newline, int pri, const struct timespec *now, static void logfile_write(bool newline, bool cont, int pri,
const struct timespec *now,
const char *format, va_list ap) const char *format, va_list ap)
{ {
char buf[BUFSIZ]; char buf[BUFSIZ];
int n; int n = 0;
n = logtime_fmt(buf, BUFSIZ, now); if (!cont) {
n += logtime_fmt(buf, BUFSIZ, now);
n += snprintf(buf + n, BUFSIZ - n, ": %s", logfile_prefix[pri]); n += snprintf(buf + n, BUFSIZ - n, ": %s", logfile_prefix[pri]);
}
n += vsnprintf(buf + n, BUFSIZ - n, format, ap); n += vsnprintf(buf + n, BUFSIZ - n, format, ap);
@ -278,7 +282,7 @@ void vlogmsg(bool newline, bool cont, int pri, const char *format, va_list ap)
va_copy(ap2, ap); /* Don't clobber ap, we need it again */ va_copy(ap2, ap); /* Don't clobber ap, we need it again */
if (log_file != -1) if (log_file != -1)
logfile_write(newline, pri, now, format, ap2); logfile_write(newline, cont, pri, now, format, ap2);
else if (!(log_mask & LOG_MASK(LOG_DEBUG))) else if (!(log_mask & LOG_MASK(LOG_DEBUG)))
passt_vsyslog(newline, pri, format, ap2); passt_vsyslog(newline, pri, format, ap2);