systemdの動作するシステムではsystemd-journaldデーモンを動作させ、ログの一元管理を行う。systemd-journaldはsystemdから起動したプロセスの標準出力やsyslogへのログメッセージをバイナリ形式で記録、syslogの規格にも対応、同じファシリティやプライオリティが指定できる。
sytemd-journaldの設定は「/etc/systemd/journald.conf」で行う。デフォルトの設定では、バイナリ形式のログは「/run/log/journal」配下にシステム固有のディレクトリを作成し、その中の「system.journal」というジャーナルファイルに記録。システム固有のディレクトリ名は、インストール時に実行された systemd-machine-id-setup コマンドにより「/etc/machine-id」に記録されたものを使用。
「/run」ディレクトリはメモリ上に作成されたファイルシステム上のディレクトリのため、再起動するとデータが消えてしまう。
ログが再起動によってクリアされないようにするには、「/etc/systemd/journald.conf」でジャーナルファイルの保存先を制御する設定項目「Storage=persistent」を設定する。この設定により、systemd-journaldは「/var/log/journal」ディレクトリを作成し、その配下にログを記録するようになる。
※デフォルトの設定は「Storage=auto」
●systemd-journaldが書き込むジャーナルファイルはバイナリ形式のため、catコマンドなどで中を表示できない。systemd-journaldのログを表示するには journalctl コマンドを使用。
journalctl [オプション] [検索文字列]
オプション
・-a(—all) 画面表示できない文字も含めて全て表示
・-b(—boot) 特定のシステム起動時のログを表示。0は今回の起動時を意味。ログの古い方から1(最古のログ),2・・・と指定するか、−1(前回起動時)、−2(2回前の起動時)・・・と指定。
・-f(—follow) 新規に追加されたログをリアルタイムに表示(tail -fと同じ)
・-k(—dmesg) カーネルからのメッセージを表示(dmesgコマンドと同じ出力)
・-l(—ful) 画面表示可能なすべてのログを表示
・-n(—lines) 直近のログから指定行数分を表示(未指定時のデフォルトは10行)
・—-no-pager デフォルトで使われるlessコマンドを使用しない
・-o(—output) ログの出力形式を指定(verboseやjsonなど指定できる)
・-r(—reverse) 最新のログから表示。デフォルトは最古のログからの表示
・—since 指定した日付時刻以降のログを表示
・—until 指定した日付時刻までのログを表示
・-u(—unit) 指定したユニットからのログを表示
■検索条件指定の代表的なもの
・_PID= プロセス番号の指定
・_SYSTEMD_UNIT= Unit名の指定(-uオプションと同じ)
●loggerコマンド
生成したログメッセージをジャーナルファイルに書き込むことができる。
logger [オプション] [メッセージ]
「-p」オプションを使用すると、メッセージのファシリティ、プライオリティが指定できます。未指定時はファシリティ、プライオリティを「user.notice」として送信
また、loggerコマンドと同様に、systemd-catコマンドで指定したコマンドの実行結果をジャーナルファイルに書き込むことができる。
systemd-cat コマンド