chiark / gitweb /
journalctl: print all possible lines immediately with --follow + --since
authorAndrej Manduch <amanduch@gmail.com>
Tue, 25 Nov 2014 19:47:49 +0000 (20:47 +0100)
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Thu, 27 Nov 2014 05:24:52 +0000 (00:24 -0500)
When I tryed to run journalctl with --follow and --since arguments it
behaved very strangely.
First It prints logs from what I specified in --since argument, then
printed 10 lines (as is default in --follow) and when app put something
new in to log journalctl printed everithing from the last printed line.

How to reproduce:
1. run: journalctl -m --since 14:00 --follow
Then you'll see 10 lines of logs since 14:00. After that wait until some
app add something in the journal or just run `systemd-cat echo test`
2. After that journalctl will print every single line since 14:00 and will
follow as expected.

As long as --since and --follow will eventually print all relevant
lines, I seen no reason why not to print them right away and not after
first new message in journal.

Relevant bugzillas:
        https://bugs.freedesktop.org/show_bug.cgi?id=71546
        https://bugs.freedesktop.org/show_bug.cgi?id=64291

src/journal/journalctl.c

index b168d1e5f69a0ad93a97b83a2c7ae96d7455a9c9..904880bff83b707a3daad4c8d3ad63179b1d68a7 100644 (file)
@@ -712,7 +712,7 @@ static int parse_argv(int argc, char *argv[]) {
                         assert_not_reached("Unhandled option");
                 }
 
                         assert_not_reached("Unhandled option");
                 }
 
-        if (arg_follow && !arg_no_tail && arg_lines == ARG_LINES_DEFAULT)
+        if (arg_follow && !arg_no_tail && !arg_since && arg_lines == ARG_LINES_DEFAULT)
                 arg_lines = 10;
 
         if (!!arg_directory + !!arg_file + !!arg_machine > 1) {
                 arg_lines = 10;
 
         if (!!arg_directory + !!arg_file + !!arg_machine > 1) {