【 logger 】コマンド――システムログに記録を追加する:Linux基本コマンドTips(301)
本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、システムログに記録を追加する「logger」コマンドです。
本連載は、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)
ファイルやコマンドの出力をシステムログに記録する
「コマンド | logger」を実行すると、コマンドの出力を1行ずつシステムログに記録します。記録した内容を同時に画面にも出力したい場合は「-s」(--stderr)オプションを指定します(画面2)。
あらかじめファイルに保存されている内容であれば、「logger -f ファイル名」で出力できます。ファイルの内容を1行ずつシステムログに記録します(※5)。
※5 このとき、テキストファイルを指定するように気を付ける。
コマンド実行例
コマンド | logger
(コマンドの出力をシステムログに記録する)
コマンド | logger -s
(コマンドの出力をシステムログに記録、記録内容を標準エラー出力にも表示する)
出力先を変更する
「-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」でメッセージを残す)
筆者紹介
西村 めぐみ(にしむら めぐみ)
元々はDOSユーザーで「DOS版UNIX-like tools」を愛用。ソフトハウスに勤務し生産管理のパッケージソフトウェアの開発およびサポート業務を担当、その後ライターになる。著書に『図解でわかるLinux』『らぶらぶLinuxシリーズ』『Accessではじめるデータベース超入門[改訂2版]』『macOSコマンド入門』など。地方自治体の在宅就業支援事業にてMicrosoft Officeの教材作成およびeラーニング指導を担当。会社などの"PCヘルパー"やピンポイント研修なども行っている。
Copyright © ITmedia, Inc. All Rights Reserved.