• Harald Hoyer's avatar
    journal: add one more level on top with AND · cd34b3c6
    Harald Hoyer authored
    When using "-p" and "-b" in combination with "-u", the output is not
    what you would expect. The reason is the sd_journal_add_disjunction()
    call in add_matches_for_unit() and add_matches_for_user_unit(), which
    adds two ORs without taking the other conditions to every OR.
    
    Adding another level on top with AND and sd_journal_add_conjunction()
    solves the problem.
    
    Output before:
    
    $ journalctl -o short-monotonic -ab -p 0 -u sshd.service
    
    -- Reboot --
    [    3.216305] lenovo systemd[1]: Starting OpenSSH server daemon...
    -- Reboot --
    [    3.168666] lenovo systemd[1]: Starting OpenSSH server daemon...
    [    3.169639] lenovo systemd[1]: Started OpenSSH server daemon.
    [36285.635389] lenovo systemd[1]: Stopped OpenSSH server daemon.
    -- Reboot --
    [   10.838657] lenovo systemd[1]: Starting OpenSSH server daemon...
    [   10.913698] lenovo systemd[1]: Started OpenSSH server daemon.
    [ 6881.035183] lenovo systemd[1]: Stopped OpenSSH server daemon.
    -- Reboot --
    [    6.636228] lenovo systemd[1]: Starting OpenSSH server daemon...
    [    6.662573] lenovo systemd[1]: Started OpenSSH server daemon.
    [    6.681148] lenovo sshd[397]: Server listening on 0.0.0.0 port 22.
    [    6.681379] lenovo sshd[397]: Server listening on :: port 22.
    
    As we see, the output is from _every_ boot and priority 0 is not taken
    into account.
    
    Output after patch:
    
    $ journalctl -o short-monotonic -ab -p 0 -u sshd.service
    -- Logs begin at Sun 2013-02-24 20:54:44 CET, end at Tue 2013-03-19 14:58:21 CET. --
    
    Increasing the priority:
    
    $ journalctl -o short-monotonic -ab -p 6 -u sshd.service
    -- Logs begin at Sun 2013-02-24 20:54:44 CET, end at Tue 2013-03-19 14:59:12 CET. --
    [    6.636228] lenovo systemd[1]: Starting OpenSSH server daemon...
    [    6.662573] lenovo systemd[1]: Started OpenSSH server daemon.
    [    6.681148] lenovo sshd[397]: Server listening on 0.0.0.0 port 22.
    [    6.681379] lenovo sshd[397]: Server listening on :: port 22.
    cd34b3c6
test-journal-match.c 2.9 KB