【Linux】loggerコマンド意図的にログを発生させる

Linux

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コマンドが必要だったかは正直微妙でしたが…)