|
Harald Hoyer |
fe20ad |
From 9d5dbdd18f4c106856f031ae94d4f05aa3259de7 Mon Sep 17 00:00:00 2001
|
|
Harald Hoyer |
fe20ad |
From: Harald Hoyer <harald@redhat.com>
|
|
Harald Hoyer |
fe20ad |
Date: Thu, 1 Aug 2013 12:14:02 +0200
|
|
Harald Hoyer |
fe20ad |
Subject: [PATCH] journal: handle multiline syslog messages
|
|
Harald Hoyer |
fe20ad |
MIME-Version: 1.0
|
|
Harald Hoyer |
fe20ad |
Content-Type: text/plain; charset=UTF-8
|
|
Harald Hoyer |
fe20ad |
Content-Transfer-Encoding: 8bit
|
|
Harald Hoyer |
fe20ad |
|
|
Harald Hoyer |
fe20ad |
Since the journal can handle multiple lines just well natively,
|
|
Harald Hoyer |
fe20ad |
and rsyslog can be configured to handle them as well, there is no need
|
|
Harald Hoyer |
fe20ad |
to truncate messages from syslog() after the first newline.
|
|
Harald Hoyer |
fe20ad |
|
|
Harald Hoyer |
fe20ad |
Reproducer:
|
|
Harald Hoyer |
fe20ad |
|
|
Harald Hoyer |
fe20ad |
1. Add following four lines to /etc/rsyslog.conf
|
|
Harald Hoyer |
fe20ad |
|
|
Harald Hoyer |
fe20ad |
----------
|
|
Harald Hoyer |
fe20ad |
$EscapeControlCharactersOnReceive off
|
|
Harald Hoyer |
fe20ad |
$ActionFileDefaultTemplate RSYSLOG_SysklogdFileFormat
|
|
Harald Hoyer |
fe20ad |
$SpaceLFOnReceive on
|
|
Harald Hoyer |
fe20ad |
$DropTrailingLFOnReception off
|
|
Harald Hoyer |
fe20ad |
----------
|
|
Harald Hoyer |
fe20ad |
|
|
Harald Hoyer |
fe20ad |
3. Restart rsyslog
|
|
Harald Hoyer |
fe20ad |
# service rsyslog restart
|
|
Harald Hoyer |
fe20ad |
|
|
Harald Hoyer |
fe20ad |
4. Compile and run the following program
|
|
Harald Hoyer |
fe20ad |
|
|
Harald Hoyer |
fe20ad |
----------
|
|
Harald Hoyer |
fe20ad |
#include <stdio.h>
|
|
Harald Hoyer |
fe20ad |
#include <syslog.h>
|
|
Harald Hoyer |
fe20ad |
|
|
Harald Hoyer |
fe20ad |
int main()
|
|
Harald Hoyer |
fe20ad |
{
|
|
Harald Hoyer |
fe20ad |
syslog(LOG_INFO, "aaa%caaa", '\n');
|
|
Harald Hoyer |
fe20ad |
return 0;
|
|
Harald Hoyer |
fe20ad |
}
|
|
Harald Hoyer |
fe20ad |
----------
|
|
Harald Hoyer |
fe20ad |
|
|
Harald Hoyer |
fe20ad |
Actual results:
|
|
Harald Hoyer |
fe20ad |
Below message appears in /var/log/messages.
|
|
Harald Hoyer |
fe20ad |
|
|
Harald Hoyer |
fe20ad |
----------
|
|
Harald Hoyer |
fe20ad |
Sep 7 19:19:39 localhost test2: aaa
|
|
Harald Hoyer |
fe20ad |
----------
|
|
Harald Hoyer |
fe20ad |
|
|
Harald Hoyer |
fe20ad |
Expected results:
|
|
Harald Hoyer |
fe20ad |
Below message, which worked prior to systemd-journald
|
|
Harald Hoyer |
fe20ad |
appears in /var/log/messages.
|
|
Harald Hoyer |
fe20ad |
|
|
Harald Hoyer |
fe20ad |
----------
|
|
Harald Hoyer |
fe20ad |
Sep 7 19:19:39 localhost test2: aaa aaa
|
|
Harald Hoyer |
fe20ad |
|
|
Harald Hoyer |
fe20ad |
https://bugzilla.redhat.com/show_bug.cgi?id=855313
|
|
Harald Hoyer |
fe20ad |
---
|
|
Harald Hoyer |
fe20ad |
src/journal/journald-server.c | 7 +------
|
|
Harald Hoyer |
fe20ad |
1 file changed, 1 insertion(+), 6 deletions(-)
|
|
Harald Hoyer |
fe20ad |
|
|
Harald Hoyer |
fe20ad |
diff --git a/src/journal/journald-server.c b/src/journal/journald-server.c
|
|
Harald Hoyer |
fe20ad |
index 60c32b1..c5c195a 100644
|
|
Harald Hoyer |
fe20ad |
--- a/src/journal/journald-server.c
|
|
Harald Hoyer |
fe20ad |
+++ b/src/journal/journald-server.c
|
|
Harald Hoyer |
fe20ad |
@@ -1240,12 +1240,7 @@ int process_event(Server *s, struct epoll_event *ev) {
|
|
Harald Hoyer |
fe20ad |
char *e;
|
|
Harald Hoyer |
fe20ad |
|
|
Harald Hoyer |
fe20ad |
if (n > 0 && n_fds == 0) {
|
|
Harald Hoyer |
fe20ad |
- e = memchr(s->buffer, '\n', n);
|
|
Harald Hoyer |
fe20ad |
- if (e)
|
|
Harald Hoyer |
fe20ad |
- *e = 0;
|
|
Harald Hoyer |
fe20ad |
- else
|
|
Harald Hoyer |
fe20ad |
- s->buffer[n] = 0;
|
|
Harald Hoyer |
fe20ad |
-
|
|
Harald Hoyer |
fe20ad |
+ s->buffer[n] = 0;
|
|
Harald Hoyer |
fe20ad |
server_process_syslog_message(s, strstrip(s->buffer), ucred, tv, label, label_len);
|
|
Harald Hoyer |
fe20ad |
} else if (n_fds > 0)
|
|
Harald Hoyer |
fe20ad |
log_warning("Got file descriptors via syslog socket. Ignoring.");
|