このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。

【Linux】システムログに行を追加する:loggerコマンド

loggerコマンドの概要

 loggerコマンドは、システムログにメッセージを追加するためのツールです。システム管理者が手動でログを記録する場合や、スクリプトから自動的にログを送信する場合に使用されます。

【構文】
logger [オプション] メッセージ

主なオプションと説明

オプション説明
-p ファシリティ.プライオリティログのファシリティとプライオリティを指定します。-p local0.info
-t タグログエントリにタグを追加します。-t myscript
-iプロセスIDをログメッセージに追加します。-i
-f ファイルファイルの内容をログに追加します。-f /path/to/file
主なオプションと説明

システムログが格納されるファイル

ディストリビューションログファイル
Ubuntu/var/log/syslog
CentOS/var/log/messages
システムログが格納されるファイル

loggerコマンドの注意事項

 loggerコマンドのオプションには、ファシリティやプライオリティの指定が含まれますが、rsyslogの設定で使用できる特殊な値(例: *none)は使用できません。

  • *:全てのファシリティやプライオリティを意味する。
  • none:該当するログメッセージを無視する。

コマンドの使用例と解説

1.シンプルなメッセージを追加する。

・「logger "This is a test log message."」コマンドを実行します。

 デフォルトのファシリティとプライオリティで「This is a test log message.」というメッセージをシステムログに追加します。

user01@ubuntu-vm:~$ logger "This is a test log message."

確認方法

・「tail -n 10 /var/log/syslog」コマンドを実行します。(Ubuntuの場合)

※CentOSの場合は「tail -n 10 /var/log/messages」コマンドを実行します。

user01@ubuntu-vm:~$ tail -n 10 /var/log/syslog
Jul 21 11:41:54 ubuntu-vm user01: This is a test log message.
Jul 21 11:42:09 ubuntu-vm anacron[675]: Job `cron.daily' started
Jul 21 11:42:09 ubuntu-vm anacron[3352]: Updated timestamp for job `cron.daily' to 2024-07-21
Jul 21 11:42:09 ubuntu-vm systemd[1]: Starting Download data for packages that failed at package install time...
Jul 21 11:42:09 ubuntu-vm systemd[1]: update-notifier-download.service: Deactivated successfully.
Jul 21 11:42:09 ubuntu-vm systemd[1]: Finished Download data for packages that failed at package install time.
Jul 21 11:42:09 ubuntu-vm cracklib: no dictionary update necessary.
Jul 21 11:42:09 ubuntu-vm anacron[675]: Job `cron.daily' terminated
Jul 21 11:42:09 ubuntu-vm anacron[675]: Normal exit (1 job run)
Jul 21 11:42:09 ubuntu-vm systemd[1]: anacron.service: Deactivated successfully.

2.特定のファシリティとプライオリティを指定する。

・「logger -p local0.info "Informational message from local0."」コマンドを実行します。

 local0ファシリティとinfoプライオリティでメッセージをログに追加します。local0はローカルユーザー定義のメッセージです。

user01@ubuntu-vm:~$ logger -p local0.info "Informational message from local0."

確認方法

・「tail -n 10 /var/log/syslog」コマンドを実行します。(Ubuntuの場合)

※CentOSの場合は「tail -n 10 /var/log/messages」コマンドを実行します。

user01@ubuntu-vm:~$ tail -n 10 /var/log/syslog
Jul 21 11:42:09 ubuntu-vm anacron[3352]: Updated timestamp for job `cron.daily' to 2024-07-21
Jul 21 11:42:09 ubuntu-vm systemd[1]: Starting Download data for packages that failed at package install time...
Jul 21 11:42:09 ubuntu-vm systemd[1]: update-notifier-download.service: Deactivated successfully.
Jul 21 11:42:09 ubuntu-vm systemd[1]: Finished Download data for packages that failed at package install time.
Jul 21 11:42:09 ubuntu-vm cracklib: no dictionary update necessary.
Jul 21 11:42:09 ubuntu-vm anacron[675]: Job `cron.daily' terminated
Jul 21 11:42:09 ubuntu-vm anacron[675]: Normal exit (1 job run)
Jul 21 11:42:09 ubuntu-vm systemd[1]: anacron.service: Deactivated successfully.
Jul 21 11:42:21 ubuntu-vm systemd[2406]: Started Application launched by gnome-session-binary.
Jul 21 11:45:01 ubuntu-vm user01: Informational message from local0.

3.タグを付けてログを追加する。

・「logger -t myscript "This is a log message from my script."」コマンドを実行します。

myscriptというタグを付けてメッセージをログに追加します。

user01@ubuntu-vm:~$ logger -t myscript "This is a log message from my script."

確認方法

・「tail -n 10 /var/log/syslog」コマンドを実行します。(Ubuntuの場合)

※CentOSの場合は「tail -n 10 /var/log/messages」コマンドを実行します。

user01@ubuntu-vm:~$ tail -n 10 /var/log/syslog
Jul 21 11:42:09 ubuntu-vm systemd[1]: update-notifier-download.service: Deactivated successfully.
Jul 21 11:42:09 ubuntu-vm systemd[1]: Finished Download data for packages that failed at package install time.
Jul 21 11:42:09 ubuntu-vm cracklib: no dictionary update necessary.
Jul 21 11:42:09 ubuntu-vm anacron[675]: Job `cron.daily' terminated
Jul 21 11:42:09 ubuntu-vm anacron[675]: Normal exit (1 job run)
Jul 21 11:42:09 ubuntu-vm systemd[1]: anacron.service: Deactivated successfully.
Jul 21 11:42:21 ubuntu-vm systemd[2406]: Started Application launched by gnome-session-binary.
Jul 21 11:45:01 ubuntu-vm user01: Informational message from local0.
Jul 21 11:47:10 ubuntu-vm rsyslogd: [origin software="rsyslogd" swVersion="8.2112.0" x-pid="555" x-info="https://www.rsyslog.com"] rsyslogd was HUPed
Jul 21 11:48:25 ubuntu-vm myscript: This is a log message from my script.

4.ファイルの内容をログに追加する。

ホームディレクトリにログに追加するファイルを作成します。

・「echo "This is test log." > file.log」コマンドを実行します。

user01@ubuntu-vm:~$ echo "This is test log." > file.log

・「logger -f /home/user01/file.log」コマンドを実行します。

 指定したファイルの内容をログに追加します。※「/home/user01」の部分はログインしているユーザーのホームディレクトリに置き換えてください。

user01@ubuntu-vm:~$ logger -f /home/user01/file.log

確認方法

・「tail -n 10 /var/log/syslog」コマンドを実行します。(Ubuntuの場合)

※CentOSの場合は「tail -n 10 /var/log/messages」コマンドを実行します。

user01@ubuntu-vm:~$ tail -n 10 /var/log/syslog
Jul 21 11:51:45 ubuntu-vm dbus-daemon[2429]: [session uid=1000 pid=2429] Successfully activated service 'org.freedesktop.Tracker3.Miner.Extract'
Jul 21 11:51:45 ubuntu-vm systemd[2406]: Started Tracker metadata extractor.
Jul 21 11:52:09 ubuntu-vm systemd[1]: Starting Cleanup of Temporary Directories...
Jul 21 11:52:09 ubuntu-vm systemd[1]: systemd-tmpfiles-clean.service: Deactivated successfully.
Jul 21 11:52:09 ubuntu-vm systemd[1]: Finished Cleanup of Temporary Directories.
Jul 21 11:56:34 ubuntu-vm dbus-daemon[2429]: [session uid=1000 pid=2429] Activating via systemd: service name='org.freedesktop.Tracker3.Miner.Extract' unit='tracker-extract-3.service' requested by ':1.9' (uid=1000 pid=2456 comm="/usr/libexec/tracker-miner-fs-3 " label="unconfined")
Jul 21 11:56:34 ubuntu-vm systemd[2406]: Starting Tracker metadata extractor...
Jul 21 11:56:34 ubuntu-vm dbus-daemon[2429]: [session uid=1000 pid=2429] Successfully activated service 'org.freedesktop.Tracker3.Miner.Extract'
Jul 21 11:56:34 ubuntu-vm systemd[2406]: Started Tracker metadata extractor.
Jul 21 11:56:42 ubuntu-vm user01: This is test log.

5.不要なファイルを削除します。

この演習で作成した不要なファイルを削除します。

・「rm file.log」コマンドを実行し、「ls」コマンドで削除されたかを確認します。

user01@ubuntu-vm:~$ rm file.log
user01@ubuntu-vm:~$ ls
snap          テンプレート  ドキュメント  ピクチャ      公開
ダウンロード  デスクトップ  ビデオ        ミュージック

まとめ

 loggerコマンドは、システム管理者やスクリプトからシステムログにメッセージを追加するための強力なツールです。オプションを活用することで、ファシリティやプライオリティ、タグを設定し、ログの整理やフィルタリングを容易にします。UbuntuやCentOSなど、異なるLinuxディストリビューションでも使い方は共通しているため、幅広く利用されています。ただし、rsyslogの設定と異なる点に注意して使用することが重要です。