static void logger_stdin(struct logger_ctl *ctl)
{
+ /* note: we re-generate the the syslog header for each log message to
+ * update header timestamps and to reflect possible priority changes.
+ * The initial header is generated by logger_open().
+ */
+ int has_header = 1;
int default_priority = ctl->pri;
int last_pri = default_priority;
size_t max_usrmsg_size = ctl->max_message_size - strlen(ctl->hdr);
ctl->pri = default_priority;
if (ctl->pri != last_pri) {
- generate_syslog_header(ctl);
+ has_header = 0;
max_usrmsg_size = ctl->max_message_size - strlen(ctl->hdr);
last_pri = ctl->pri;
}
}
buf[i] = '\0';
- if (i > 0 || !ctl->skip_empty_lines)
+ if (i > 0 || !ctl->skip_empty_lines) {
+ if (!has_header)
+ generate_syslog_header(ctl);
write_output(ctl, buf);
+ has_header = 0;
+ }
if (c == '\n') /* discard line terminator */
c = getchar();