連載
» 2019年04月26日 05時00分 公開

Linux基本コマンドTips(301):【 logger 】コマンド――システムログに記録を追加する

本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、システムログに記録を追加する「logger」コマンドです。

[西村めぐみ,@IT]
「Linux基本コマンドTips」のインデックス

Linux基本コマンドTips一覧

 本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、システムログに記録を追加する「logger」コマンドです。

loggerコマンドとは?

 「logger」はシステムログに指定した内容の行を追加するコマンドです。

 CentOSの場合は「/var/log/messages」、Ubuntuの場合は「/var/log/syslog」にユーザー独自のメッセージを記録できます。



loggerコマンドの書式

logger [オプション] [メッセージ]

※[ ]は省略可能な引数を示しています。





loggerの主なオプション

短いオプション 長いオプション 意味
-i --id loggerプロセスのプロセスID(PID)も併せて記録する
-s --stderr 記録した内容を標準エラー出力にも出力する
-f ファイル名 --file ファイル名 指定したファイルの内容をシステムログに追加する
-p 優先度 --priority 優先度 優先度を指定して記録する(※1)
-t タグ --tag タグ ログの各行に指定したタグを出力する(※2)
-- これ以降は全てメッセージとして扱う(※3)

※1 優先度は「分類.重要度」で指定する。デフォルトは「user.notice」(本文を参照)。
※2 任意の文字列をタグに指定可能。指定しない場合は実行したユーザーの名前を記録する。
※3 「-」(ハイフン)から始まるメッセージを記録する場合に使う。





システムログにユーザーのメッセージを記録する

 「logger メッセージ」で、システムログの末尾にメッセージを追記します(タイミングによっては末尾にならないこともあります)。追記する内容は「日時 ホスト名 ユーザー名: メッセージ」となります。

 ユーザー名の部分を任意の文字列にしたい場合は「logger -t 文字列 メッセージ」のようにします。追記の内容は「日時 ホスト名 文字列: メッセージ」に変わります。なお、この文字列を「タグ」と言います。

 メッセージを省略すると、標準入力からの入力待ちになります。入力後、[CTRL]+[D]キーや[CTRL]+[C]キーでコマンドを終了してください。

 画面1ではtailコマンドを使って出力内容を確認しています(※4)。なお、システムログの確認には、root権限が必要です。sudoコマンド(第68回)などを利用してください。

※4 自由になる環境でテストする場合、別の端末で「tail -f /var/log/messages」や「tailf /var/log/messages」を用いてログを監視し続けると、loggerの動作を確認しやすい。lessコマンドの場合「less /var/log/messages」で起動してから[Shift]+[F]キー(大文字の「F」)を入力すると監視モードになる。いずれも[CTRL]+[C]キーで監視終了。なお、Ubuntuの場合は「/var/log/messages」ではなく、「/var/log/syslog」を指定する。



コマンド実行例

logger メッセージ

(システムログにメッセージを記録する)

logger mymessage

(システムログに「日時 ホスト名 ユーザー名: mymessage」を記録する)(画面1

logger -t 文字列 メッセージ

(メッセージにタグを付けて記録する)

logger -t mytitle mymessage

(システムログに「日時 ホスト名 mytitle: mymessage」を記録する)(画面1


画面1 画面1 システムログにメッセージを追記したところ


ファイルやコマンドの出力をシステムログに記録する

 「コマンド | logger」を実行すると、コマンドの出力を1行ずつシステムログに記録します。記録した内容を同時に画面にも出力したい場合は「-s」(--stderr)オプションを指定します(画面2)。

 あらかじめファイルに保存されている内容であれば、「logger -f ファイル名」で出力できます。ファイルの内容を1行ずつシステムログに記録します(※5)。

※5 このとき、テキストファイルを指定するように気を付ける。



コマンド実行例

コマンド | logger

(コマンドの出力をシステムログに記録する)

コマンド | logger -s

(コマンドの出力をシステムログに記録、記録内容を標準エラー出力にも表示する)


画面2 画面2 コマンドの出力をシステムログに追記したところ


出力先を変更する

 「-p」オプションで「優先度(priority)」を変更すると、出力先を変更できます(画面3)。優先度を指定するには「分類.重要度」とします。デフォルトは「user.notice」です。

 分類にはauth、authpriv(機密に関わる種類のセキュリティ情報)、cron、daemon、ftp、kern、lpr、mail、news、syslog、user、uucp、local0〜local7などがあります(※6)。

 重要度には深刻な順に、emerg(システムが使用不能)、alert(直ちに対処が必要)、crit(致命的)、err(エラー)、warning(警告)、notice(通常の状態だが大切な情報)、info(通知)、debug(デバッグ)などがあります(※7)。

※6 この他、authと同義のsecurityがあるものの、非推奨となっている。
※7 この他、errと同義のerror、emergと同義のpanic、warningと同義のwarnがあるがいずれも非推奨だ。



 出力先は、syslogやrsyslogの設定ファイル(「/etc/rsyslog.conf」「/etc/rsyslog.d/」など)の設定に従います。

 例えば、CentOS 7の場合、重要度が「emerg」のものは、ユーザー全員の画面に通知します。また、cronやmailなどはそれぞれ専用のログにメッセージを残すように設定されているかもしれません(※8)。

※8 CentOSの場合、「user.notice」は「/var/log/messages」に保存されるが、「user.debug」は画面3の結果のように保存されない。「user.debug」あるいは「*.debug」を出力する設定が必要だ。テストを進める場合は「/var/log/messages」とは異なるファイルを使用するとよい。



コマンド実行例

logger -p user.notice メッセージ

(標準の分類、重要度でメッセージを残す)

logger -p user.debug メッセージ

(重要度が低い「debug」でメッセージを残す)


画面3 画面3 重要度を変えてシステムログにメッセージを追記したところ


筆者紹介

西村 めぐみ(にしむら めぐみ)

元々はDOSユーザーで「DOS版UNIX-like tools」を愛用。ソフトハウスに勤務し生産管理のパッケージソフトウェアの開発およびサポート業務を担当、その後ライターになる。著書に『図解でわかるLinux』『らぶらぶLinuxシリーズ』『Accessではじめるデータベース超入門[改訂2版]』『macOSコマンド入門』など。地方自治体の在宅就業支援事業にてMicrosoft Officeの教材作成およびeラーニング指導を担当。会社などの"PCヘルパー"やピンポイント研修なども行っている。


Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。