Linux logger コマンド

Linux 命令大全Linux コマンド大全


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 印刷システム
mail メールシステム
news ニュースシステム
syslog syslogd 内部メッセージ
user ユーザーレベルメッセージ(デフォルト)
local0-7 カスタムローカル使用

ログレベル(Level)

レベルコード 説明 数値
emerg システムが使用不可 0
alert 直ちに対応が必要 1
crit 重大な状態 2
err エラー状態 3
warning 警告状態 4
notice 通常だが重要な状態 5
info 情報メッセージ 6
debug デバッグレベルメッセージ 7

実用的な例

基本的な使い方の例

  1. シンプルなログ記録:

    logger "系统备份任务开始执行"

    これにより、システムログにメッセージが1件記録されます。デフォルトでは user.notice の優先度が使用されます。

  2. タグ付きログ:

    logger -t BACKUP "数据库备份完成"

    ログエントリは次のように表示されます:BACKUP: 数据库备份完成

  3. 優先度の指定:

    logger -p local0.notice "自定义应用程序启动"

上級の使い方の例

  1. ファイルからログ内容を読み込む:

    logger -f /var/log/myapp.log
  2. スクリプト実行状態の記録:

    #!/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
  3. リモートログ記録:

    logger -n 192.168.1.100 -P 514 "发送到远程服务器的日志"
  4. 端末とログへの同時出力:

    logger -s "这条消息会同时出现在终端和日志中"

ログの確認と管理

ログを記録した後、以下のコマンドで確認できます:

  1. システムログの確認:

    journalctl # systemd を使用するシステム または tail -f /var/log/syslog # 従来のシステム
  2. 特定タグのログをフィルタリング:

    journalctl -t BACKUP
  3. 時間でログを確認:

    journalctl --since "2023-01-01" --until "2023-01-02"

ベストプラクティスと注意事項

  1. ログタグの規範:

    • 意味のあるタグを使用する(アプリケーション名やスクリプト名など)
    • タグの一貫性を保ち、後からフィルタリングや分析をしやすくする
  2. 優先度の選択:

    • レベルを適切に使い分け、すべてのログを同じレベルにしない
    • 重要な操作には warning 以上のレベルを使用
  3. ログ内容の推奨事項:

    • 十分なコンテキスト情報を含める
    • 機密情報(パスワードなど)を記録しない
    • ログは簡潔かつ情報が完全な状態を保つ
  4. パフォーマンスへの配慮:

    • 高頻度のログ記録はパフォーマンスに影響を与える可能性がある
    • 大量のログを記録する場合は、バッファリングや非同期方式を検討する
  5. ログローテーション:

    • 古いログを定期的にクリーンアップする
    • 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 命令大全Linux コマンド大全

その他の拡張