loggerコマンド
ログを意図的に発生させることができるのが、loggerコマンドです。そういうコマンドがあるということで検証していますが、実際の業務では使ったことないっすね…。
書式
logger [-p ファシリティ.プライオリティ] [-t タグ] メッセージ
検証 loggerコマンド
※検証はCentOS8で検証しています。
syslog、cronにそれぞれメッセージを送ります。
まずはsyslogでloggerコマンドを実行してみます。
1 |
[root@localhost ~]# logger -p syslog.info -t Test "logger test msg" |
コマンドは問題なく実行されたので、実際のログを見てみます。「/var/log/messages」の末尾をtailコマンドで確認してみます。
1 2 3 4 5 |
[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にして検証してます。
1 |
[root@localhost ~]$ logger -p cron.info -t "omoti" "Do you like ricecake?" |
こちらもログを実際に見てます。ファシリティを「cron」にしたので、「/var/log/cron 」に書き込まれます。
1 2 3 4 |
[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に書き込むことができます。これも実際の業務で使ったことないです…。
1 2 |
[root@localhost localhost]# systemd-cat free |
jounalctlコマンドで表示される末尾を見ましょう。
1 2 3 4 5 6 7 |
[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コマンドが必要だったかは正直微妙でしたが…)