シェルスクリプトの実行結果や、システムの自作イベントなどをシステムログ(syslog)に残したいと思ったことはありませんか?
今回は、コマンドラインからシステムログに任意のメッセージを記録できる便利な「logger」コマンドの使い方を説明します。
なお、今回の動作検証は Ubuntu 24.04 LTS で実施しています。
loggerコマンドの基本的な使い方
「logger」コマンドの最もシンプルな使い方は、後ろに記録したいメッセージを続けるだけです。
空白スペースを含むメッセージを記録する場合は、ダブルクォーテーション(")で囲みます。
logger "メッセージ"
実行例
実際にメッセージをシステムログに送ってみます。
$ logger "test message."
システムログには以下のように記録されます。
$ sudo grep "test message." /var/log/syslog 2026-07-14T17:55:15.790423+09:00 www tamohiko: test message.
出力結果を確認すると、「タイムスタンプ」「ホスト名」「実行ユーザー名」「メッセージ」の順で記録されていることがわかります。
loggerコマンドの主なオプション
「logger」コマンドには、ログのカスタマイズに役立つ便利なオプションが多数用意されています。
ここでは、普段の運用やシェルスクリプト作成等において、私がよく使うものをピックアップして紹介していきます。
| オプション | 説明 |
|---|---|
| -p | メッセージの優先度(ファシリティ.レベル)を指定する |
| -t | メッセージにタグ(識別子)を指定する |
| -f | 指定したファイルの内容を読み込んでログに記録する |
| -i | ログに「logger」コマンド自身のプロセスID(PID)を含める |
| -s | ログへ記録すると同時に、画面(標準エラー出力)にも表示する |
各オプションの詳細と具体的な使い方
-p オプション(優先度の指定)
ログの「ファシリティ(出力元)」と「レベル(重要度)」を指定したいときに使います。
logger -p ファシリティ.レベル "メッセージ"
※指定しない場合のデフォルトは user.notice になっています。
実際に「-p」オプションを使用してみます。
$ logger -p local0.info "p option test message."
ログを確認してみると、以下のように出力されます。
$ sudo grep "p option test message." /var/log/syslog 2026-07-16T21:40:26.629183+09:00 www tamohiko: p option test message.
Ubuntu Server 24.04 LTSのsyslog(rsyslog)の初期設定では、出力されるテキスト内でファシリティやレベルの表記が省略される設定になっています。
そのため、見た目上は指定したファシリティやレベルは表示されません。
ログファイル側にファシリティやレベルのテキストを明示的に表示させたい場合は、別途 syslogの設定変更が必要になります。
ファシリティ名の一覧
普段目にしそうなファシリティを紹介します。
| ファシリティ名 | 説明 |
|---|---|
| auth | 認証システム(login, su など) |
| authpriv | 認証システムの機密情報(通常はセキュリティログにのみ記録される) |
| cron | cron デーモン |
| daemon | その他のシステムデーモン |
| ftp | FTP デーモン |
| メールシステム | |
| syslog | syslog デーモンによって内部的に生成されたメッセージ |
| user | ユーザーレベルのメッセージ |
| local0 - local7 | 自作アプリケーションなどで自由に使用するために予約されたファシリティ |
レベル名(重要度)の一覧
レベルは、以下のいずれかを指定します。
| レベル名 | 数値 | 説明 |
|---|---|---|
| emerg | 0 | システムが使用不能な状態 |
| alert | 1 | すぐに対応が必要な状態 |
| crit | 2 | 深刻な状態 |
| err | 3 | エラー状態 |
| warn | 4 | 警告状態 |
| notice | 5 | 通常の状態だが、注意すべき状態 |
| info | 6 | 情報レベルのメッセージ |
| debug | 7 | デバッグ情報 |
-t オプション(タグの指定)
デフォルトでは実行ユーザー名がログに記録されますが、「-t」オプションを使うことで任意のプログラム名や識別子(タグ)に変えることができます。
シェルスクリプト内で使うときになどに重宝します。
logger -t タグ "メッセージ"
実際に-tオプションを使用してみます。
$ logger -t my-script "スクリプトの処理を開始しました"
システムログを確認すると、ユーザー名のかわりに指定したタグ「my-script」と記録されているため、あとから検索しやすくなります。
$ sudo grep "my-script" /var/log/syslog 2026-07-14T18:11:49.087241+09:00 www my-script: スクリプトの処理を開始しました
-f オプション(ファイルから読み込み)
テキストファイルの中身をまとめて、システムログに記録したいときに便利です。
logger -f ファイル名
実際に「message.txt」ファイルからメッセージを読み込ませた場合の例です。
$ cat message.txt Test Message!! $ logger -f message.txt
システムログには、ファイルに書かれていた内容がそのまま記録されています。
$ sudo grep Test /var/log/syslog 2026-07-14T18:17:02.812775+09:00 www tamohiko: Test Message!!
-i オプション(プロセスIDを記録)
ログの中に、「logger」コマンドが実行された際のPID(プロセスID)を書き込みます。
logger -i "メッセージ"
実際に「-i」オプションを使用してみます。
$ logger -i "i option test message."
システムログには以下のように、ユーザー名のあとにPID(今回は「2111961」という数字)が記録されます。
$ sudo grep "i option test message." /var/log/syslog 2026-07-14T18:20:28.329279+09:00 www tamohiko[2111961]: i option test message.
-s オプション 標準エラー出力にもメッセージを表示
メッセージをシステムログに記録すると同時に、今操作しているターミナル画面(標準エラー出力)にも表示させます。
logger -s "メッセージ"
実際に「-s」オプションを使用してみます。
ターミナル画面に「標準エラー出力」としてメッセージが表示されます。
$ logger -s "s option test message." <13>Jul 15 09:25:03 tamohiko: s option test message.
システムログにもメッセージが記録されています。
$ sudo grep "s option test message." /var/log/syslog 2026-07-15T09:25:03.077701+09:00 www tamohiko: s option test message.


コメント