Linuxのログ
動機
Linuxには/var/log配下のログ(/var/log/messages等)があったり、journalctlコマンドで見られるログがあったり、rsyslogdというデーモンプロセスがあったりするが、その辺の理解が曖昧だったのでメモする。
rsyslog
SyslogはSystem Logging Protocolの略で、システムログまたはイベントメッセージをSyslogサーバーと呼ばれる特定のサーバーに送信するために使用される標準プロトコル。rsyslogは多くのLinuxディストリビューションで採用されているsyslogサービスのこと。
journaldとjournalctl
journaldは、各ソースからログを受信し、メモリ上のログデータベース(/run/log/journal/配下)に蓄積する。メモリ上なのでOSをシャットダウンするとデータが消失する*1。rsyslogにログを転送してファイルへログを出力する。
journalctlはログデータベースを参照するコマンド。
/var/log/messages
/var/log/messagesファイルは、システムに関する一般的なメッセージが格納される(ユーザの認証情報や各種アプリケーションに関するメッセージなど)。記述されるメッセージはsyslogで設定できる(rsyslogを使っていればrsyslogで設定)。/var/logディレクトリには、さまざまなログファイルが格納されており(例./var/log/audit/audit.log、/var/log/cron等)、単にその中の一種である。アプリケーション*2で特に設定していない場合、デフォルトで/var/log/messagesに記録するようになっている、と考えればいいと思う。
logを出力するコマンドloggerで何も指定せずに実行すると、/var/log/messagesに記録されていることがわかる。