φ(.. )メモシテオコウ systemdのjournalによるログの確認方法

Fedora20からはsyslogがデフォルトでインストールされなくなって代わりにsystemdのjournalという機能が使われるのでメモ。
この辺りの変更についてFedoraではwikiページにプロポーサルがあります。日本語のニュースだとマイナビさんに
ちょっと使った感じではjournalのほうが使いやすい感じがします。

さて、syslogがなくなってどうか変わるかというと、一番大きいのは/var/log/messagesが無くなったということですね。

masami@saga:~$ ls /var/log
.   anaconda  boot.log  btmp-20131001  cluster  dnf.log      firewalld  glusterfs  journal  libvirt  ppp      README  speech-dispatcher  tallylog  Xorg.0.log      yum.log
..  audit     btmp      chrony         cups     dnf.rpm.log  gdm        grubby     lastlog  pluto    prelink  samba   sssd               wtmp      Xorg.0.log.old

それで今までのようにログを見たい場合はどうするかというとjournalctlというコマンドを使います。
引数無しでコマンドを使った場合は一番古いログから現在までのログが出るので今日の分だけ見るなら-bオプションを使うと良いです。

引数無しで実行した場合は一番古いログから出てきます。

masami@saga:~$ journalctl | head -n 2
-- Logs begin at Fri 2013-09-27 15:18:59 JST, end at Thu 2013-10-10 16:30:22 JST. --
Sep 27 15:18:59 localhost.localdomain systemd-journal[116]: Runtime journal is using 3.5M (max 1.5G, leaving 2.3G of free 15.6G, current limit 1.5G).

オプションの-bを使った場合は一番新しいbootのところからになります。

-- Logs begin at Fri 2013-09-27 15:18:59 JST, end at Thu 2013-10-10 16:31:12 JST. --
Oct 10 12:11:24 saga systemd-journal[141]: Runtime journal is using 3.5M (max 1.5G, leaving 2.3G of free 15.6G, current limit 1.5G).

この-bは整数を引数に取ることができて、例えば1回前のbootからのログを見たい場合は以下のようになります。

$ journalctl -b -1

引数に負数を渡した場合は最新から、正の整数の場合は一番古いログからという意味です。

オプションで-kを渡した場合はdmesgコマンドと同じです。

$ journalctl -k

dmesgと違う点は出力されるログの内容によっては文字列がボールドされてたり、赤字だったりと視覚的に見やすくなっています。
f:id:masami256:20131010164042p:plain

他に便利そうなオプションとしては--system、--userなんてのがあります。機能は名前から大体想像付くと思います。前者はカーネルとかのシステムが出すログですね。

逆順から見たい場合の-rも良いですね。

masami@saga:~$ journalctl -b -r | head -3
-- Logs begin at Fri 2013-09-27 15:18:59 JST, end at Thu 2013-10-10 16:44:31 JST. --
Oct 10 16:44:31 saga kernel: IPv6: MLD: clamping QRV from 1 to 2!
Oct 10 16:44:07 saga gnome-session[1371]: [2273:2279:1010/164407:ERROR:platform_thread_linux.cc(99)] Failed to set nice value of thread to -10

出力する期間を指定することもできます。--since、--untilで両方使っても良いし片方だけでもOKです。

masami@saga:~$ journalctl -b --since "2013-10-10 16:12:00" --until "2013-10-10 16:17:30"
-- Logs begin at Fri 2013-09-27 15:18:59 JST, end at Thu 2013-10-10 16:46:36 JST. --
Oct 10 16:12:01 saga dbus-daemon[512]: dbus[512]: [system] Activating service name='org.freedesktop.PackageKit' (using servicehelper)
Oct 10 16:12:01 saga dbus[512]: [system] Activating service name='org.freedesktop.PackageKit' (using servicehelper)
Oct 10 16:12:01 saga dbus-daemon[512]: dbus[512]: [system] Successfully activated service 'org.freedesktop.PackageKit'
Oct 10 16:12:01 saga dbus[512]: [system] Successfully activated service 'org.freedesktop.PackageKit'
Oct 10 16:13:16 saga kernel: IPv6: MLD: clamping QRV from 1 to 2!
Oct 10 16:15:21 saga kernel: IPv6: MLD: clamping QRV from 1 to 2!
Oct 10 16:16:49 saga gnome-session[1371]: [2039:2045:1010/161649:ERROR:platform_thread_linux.cc(99)] Failed to set nice value of thread to -10
Oct 10 16:17:26 saga kernel: IPv6: MLD: clamping QRV from 1 to 2!

systemdのunit名を指定してそれに関するログだけ出力させることもできます。

masami@saga:~$ journalctl -b -u sshd
-- Logs begin at Fri 2013-09-27 15:18:59 JST, end at Thu 2013-10-10 16:51:44 JST. --
Oct 10 12:11:33 saga sshd[1022]: Server listening on 0.0.0.0 port 22.
Oct 10 12:11:33 saga sshd[1022]: Server listening on :: port 22.
Oct 10 12:11:33 saga systemd[1]: Starting OpenSSH server daemon...
Oct 10 12:11:33 saga systemd[1]: Started OpenSSH server daemon.

"-p"オプションでログのレベル(journalctlだとpriority)による指定もできます。このレベルはsyslog(3)のlevelと一緒です。
レベル:名称
0:emerg
1:alert
2:crit
3:err
4:warning
5:notice
6:info
7:debug

このオプションは数値、名称どちらも使えます。

masami@saga:~$ journalctl -b -p err | head -n 3
-- Logs begin at Fri 2013-09-27 15:18:59 JST, end at Thu 2013-10-10 17:01:11 JST. --
Oct 10 12:11:27 saga kernel: sd 6:0:0:0: [sdc] No Caching mode page found
Oct 10 12:11:27 saga kernel: sd 6:0:0:0: [sdc] Assuming drive cache: write through
masami@saga:~$ journalctl -b -p 3 | head -n 3
-- Logs begin at Fri 2013-09-27 15:18:59 JST, end at Thu 2013-10-10 17:01:11 JST. --
Oct 10 12:11:27 saga kernel: sd 6:0:0:0: [sdc] No Caching mode page found
Oct 10 12:11:27 saga kernel: sd 6:0:0:0: [sdc] Assuming drive cache: write through

と、こんな感じで色々とできますが、manによるとまだまだ機能があります♪