loggerコマンド
ログを意図的に発生させることができるのが、loggerコマンドです。そういうコマンドがあるということで検証していますが、実際の業務では使ったことないっすね…。
書式
logger [-p ファシリティ.プライオリティ] [-t タグ] メッセージ
検証 loggerコマンド
※検証はCentOS8で検証しています。
syslog、cronにそれぞれメッセージを送ります。
まずはsyslogでloggerコマンドを実行してみます。
[root@localhost ~]# logger -p syslog.info -t Test "logger test msg"
コマンドは問題なく実行されたので、実際のログを見てみます。「/var/log/messages」の末尾をtailコマンドで確認してみます。
[root@localhost ~]# tail /var/log/messages (途中省略) Sep 10 16:51:51 localhost systemd[1]: Started Cleanup of Temporary Directories. Sep 10 17:08:01 localhost chronyd[784]: Source 2001:418:3ff::53 replaced with 172.105.231.23 Sep 10 17:28:40 localhost Test[3041]: logger test msg
loggerコマンドで出力されているのは一番最新のlogにあたる「Sep 10 17:28:40 localhost Test[3041]: logger test msg」の部分です。ログに書き込まれています。
次にファシリティをcronにして検証してます。
[root@localhost ~]$ logger -p cron.info -t "omoti" "Do you like ricecake?"
こちらもログを実際に見てます。ファシリティを「cron」にしたので、「/var/log/cron 」に書き込まれます。
[root@localhost ~]# tail -3 /var/log/cron
Sep 10 17:53:01 localhost CROND[3488]: (root) CMD (echo date >> /home/localhost/test.log ; free >> /home/localhost/test.log)
Sep 10 17:54:01 localhost CROND[3501]: (root) CMD (echo date >> /home/localhost/test.log ; free >> /home/localhost/test.log)
Sep 10 17:54:15 localhost omoti[3505]: Do you like ricecake?
こちらも末尾に「 Sep 10 17:54:15 localhost omoti[3505]: Do you like ricecake? 」というログが出力されています。無事に送れていますね。
systemd-catコマンド
loggerコマンドに似ているコマンドです。systemd-cat [コマンド]で、コマンドの実行結果をjournalに書き込むことができます。これも実際の業務で使ったことないです…。
[root@localhost localhost]# systemd-cat free
jounalctlコマンドで表示される末尾を見ましょう。
[root@localhost localhost]# journalctl |tail -5
9月 10 18:05:01 localhost.localdomain anacron[2427]: Job `cron.monthly' terminated
9月 10 18:05:01 localhost.localdomain anacron[2427]: Normal exit (3 jobs run)
9月 10 18:05:50 localhost.localdomain free[3744]: total used free shared buff/cache available
9月 10 18:05:50 localhost.localdomain free[3744]: Mem: 1873316 499120 886460 9480 487736 1214308
9月 10 18:05:50 localhost.localdomain free[3744]: Swap: 2170876 0 2170876
確かに、freeコマンドの実行結果が書き込まれていますね。
実際の使い道ってなんだろう?
そもそもこの記事でloggerコマンドを検証したのは、LPICのテキストに載っていたからとりあえず実行してみただけで、特に深く使い道なんて考えていなかったんですね。
「ログを意図的に発生させたい状況ってなんだろう?」を私なりに考えてみましたが、ログ監視の検証の際には使えるんじゃないかなと思いました。例えば「/var/log/messagesにfatalという文字列が出力されたらSNMPトラップ送信させたい!」という要件があったとして、その設定がちゃんと反映されているか確認したいときは、loggerコマンドでサクッと検証できますよね。わざわざ事象を再現しなくても、ログ監視の機能だけを見たい場合なんかは、結構使えるんじゃないかな。
…とはいえ、上記で書いた通り私はまじめな目的で使ったことないので、「監視設定を確認するのに便利とか使えるかも」とかは想像ですよ。そういうことしたいと思った人は是非どうぞ試してみてください。
2022/03/18 追記
冒頭に実務で使用したことがないと書きましたが、ついに使ったので追記します。
どんな時に使ったかといいますと、NW機器のファームアップ時のログ転送ができているかを検証する際に使いました。(NW機器からのログは随時出ているのでloggerコマンドが必要だったかは正直微妙でしたが…)

