Linux logger コマンド
logger は Linux システムにおいて、シンプルながら強力なコマンドラインツールで、システムログ(syslog)にログエントリを追加するために使用します。ユーザーやスクリプトプログラムがカスタムメッセージをシステムログファイルに書き込むことを可能にし、システム管理やトラブルシューティングに欠かせないツールです。
代表的な使用シーン:
- スクリプト実行時の重要な操作の記録
- システムメンテナンスタスクの状態追跡
- カスタムアプリケーションのログ記録
- リモートログ記録(syslog サーバーと組み合わせる)
基本構文とパラメータ
logger コマンドの基本構文は次のとおりです:
logger [选项] [消息]
よく使うオプションパラメータ
| オプション | 説明 |
|---|---|
-p, --priority <优先级> |
ログの優先度を指定(facility.level) |
-t, --tag <标签> |
指定したタグでログエントリをマーク |
-i, --id |
各ログ行にプロセスIDを含める |
-f, --file <文件> |
指定したファイルからログ内容を読み込む |
-s, --stderr |
ログを同時に標準エラー出力へ出力 |
-n, --server <主机> |
リモートの syslog サーバーにログを送信 |
-P, --port <端口> |
リモート syslog サーバーのポートを指定 |
-u, --socket <套接字> |
デフォルトデバイスではなく Unix ドメインソケットを指定 |
-d, --udp |
UDP プロトコルでログを送信(デフォルト) |
-T, --tcp |
TCP プロトコルでログを送信 |
-h, --help |
ヘルプ情報を表示 |
-V, --version |
バージョン情報を表示 |
優先度(Priority)の詳細
ログの優先度は facility(ファシリティ)と level(レベル)の2つの部分で構成され、形式は次のとおりです:facility.level。
ファシリティ(Facility)タイプ
| ファシリティコード | 説明 |
|---|---|
| auth | セキュリティ/認証メッセージ |
| authpriv | プライベート認証メッセージ |
| cron | cron デーモン(定期タスク) |
| daemon | システムデーモン |
| kern | カーネルメッセージ |
| lpr | 印刷システム |
| メールシステム | |
| news | ニュースシステム |
| syslog | syslogd 内部メッセージ |
| user | ユーザーレベルメッセージ(デフォルト) |
| local0-7 | カスタムローカル使用 |
ログレベル(Level)
| レベルコード | 説明 | 数値 |
|---|---|---|
| emerg | システムが使用不可 | 0 |
| alert | 直ちに対応が必要 | 1 |
| crit | 重大な状態 | 2 |
| err | エラー状態 | 3 |
| warning | 警告状態 | 4 |
| notice | 通常だが重要な状態 | 5 |
| info | 情報メッセージ | 6 |
| debug | デバッグレベルメッセージ | 7 |
実用的な例
基本的な使い方の例
-
シンプルなログ記録:
logger "系统备份任务开始执行"
これにより、システムログにメッセージが1件記録されます。デフォルトでは user.notice の優先度が使用されます。
-
タグ付きログ:
logger -t BACKUP "数据库备份完成"
ログエントリは次のように表示されます:
BACKUP: 数据库备份完成 -
優先度の指定:
logger -p local0.notice "自定义应用程序启动"
上級の使い方の例
-
ファイルからログ内容を読み込む:
logger -f /var/log/myapp.log
-
スクリプト実行状態の記録:
#!/bin/bash logger -t SCRIPT -p user.info "脚本开始执行" # 执行任务... if [ $? -eq 0 ]; then logger -t SCRIPT -p user.info "任务执行成功" else logger -t SCRIPT -p user.err "任务执行失败" fi -
リモートログ記録:
logger -n 192.168.1.100 -P 514 "发送到远程服务器的日志"
-
端末とログへの同時出力:
logger -s "这条消息会同时出现在终端和日志中"
ログの確認と管理
ログを記録した後、以下のコマンドで確認できます:
-
システムログの確認:
journalctl # systemd を使用するシステム または tail -f /var/log/syslog # 従来のシステム -
特定タグのログをフィルタリング:
journalctl -t BACKUP
-
時間でログを確認:
journalctl --since "2023-01-01" --until "2023-01-02"
ベストプラクティスと注意事項
-
ログタグの規範:
- 意味のあるタグを使用する(アプリケーション名やスクリプト名など)
- タグの一貫性を保ち、後からフィルタリングや分析をしやすくする
-
優先度の選択:
- レベルを適切に使い分け、すべてのログを同じレベルにしない
- 重要な操作には warning 以上のレベルを使用
-
ログ内容の推奨事項:
- 十分なコンテキスト情報を含める
- 機密情報(パスワードなど)を記録しない
- ログは簡潔かつ情報が完全な状態を保つ
-
パフォーマンスへの配慮:
- 高頻度のログ記録はパフォーマンスに影響を与える可能性がある
- 大量のログを記録する場合は、バッファリングや非同期方式を検討する
-
ログローテーション:
- 古いログを定期的にクリーンアップする
- logrotate を設定してログファイルのサイズを管理する
よくある質問と回答
Q1: ログが /var/log/syslog に表示されないのはなぜですか?
A1: 考えられる原因は次のとおりです:
- 使用している facility が他のファイルに書き込むよう設定されている
- ログレベルがシステム設定の最低記録レベルより低い
- システムが従来の syslog ではなく journald を使用している
Q2: 自分のシステムがどのログシステムを使用しているかを確認するにはどうすればよいですか?
A2: 以下のコマンドを実行して確認します:
ps aux | grep -E "syslog|journald"
Q3: 複数のオプションを同時に使用できますか?
A3: はい、例えば次のようにできます:
logger -t MYAPP -p local0.err -i "关键错误发生"
Q4: リモートログサーバーの設定をテストするにはどうすればよいですか?
A4: logger を使用してテストメッセージを送信します:
logger -n 远程服务器IP -P 端口 "测试消息"
この記事を通じて、logger コマンドの主要な使い方を習得できたはずです。この一見シンプルなツールは、実際のシステム管理やアプリケーション開発において非常に役立ち、完全なログ記録の仕組みを構築するのに役立ちます。実際の作業で積極的に練習し、具体的なニーズに応じて各種オプションパラメータを柔軟に活用することをお勧めします。
その他の拡張
Linux コマンド大全