[PHP] PHPでのログレベル

2017年11月27日月曜日

PHP

monolog

PHPのログライブラリとして、monologを使っていたのだけれど、ログレベルがやたらにあるなぁと思っていた。
  • DEBUG
  • INFO
  • NOTICE
  • WARNING
  • ERROR
  • CRITICAL
  • ALERT
  • EMERGENCY
Javaでよく使われるlog4jなんかだと、以下の6つくらい。
  • TRACE
  • DEBUG
  • INFO
  • WARN
  • ERROR
  • FATAL
どうも、PHPではロガーの標準インターフェイスがPSR-3というので決まっているみたい。
で、PSR-3を読んでいくと、RFC 5424てのが、出てくる。

RFC 5424

じゃあ、RFC 5424って何者なんだ?って話になるけど、これはsyslogの 仕様を規定しているものらしい。

6.2.1. PRI に以下が登場する。
  1. Emergency: system is unusable
  2. Alert: action must be taken immediately
  3. Critical: critical conditions
  4. Error: error conditions
  5. Warning: warning conditions
  6. Notice: normal but significant condition
  7. Informational: informational messages
  8. Debug: debug-level messages

使い分け

とは言え、じゃあどうやって使い分けるんだって話だけど、monologのログレベルの説明に簡単にだけど、載っていた。
こんな感じだろうか。
  • DEBUG (100): Detailed debug information.
    デバッグ情報。
  • INFO (200): Interesting events. Examples: User logs in, SQL logs.
    ユーザーがログインした。SQLを発行した。といったイベント情報。
  • NOTICE (250): Normal but significant events.
    正常ではあるが、重要なイベントが発生した。
  • WARNING (300): Exceptional occurrences that are not errors. Examples: Use of deprecated APIs, poor use of an API, undesirable things that are not necessarily wrong.
    非推奨のAPIの使用、といったエラーではないが望ましくないイベント情報。
  • ERROR (400): Runtime errors that do not require immediate action but should typically be logged and monitored.
    即座に対応が必要ではないが、記録、監視が必要なエラー。
  • CRITICAL (500): Critical conditions. Example: Application component unavailable, unexpected exception.
    アプリケーションのコンポーネントが利用できない。予期していない例外が発生している。
  • ALERT (550): Action must be taken immediately. Example: Entire website down, database unavailable, etc. This should trigger the SMS alerts and wake you up.
    即座に対応が必要。ウェブサイト、DBが停止している。
  • EMERGENCY (600): Emergency: system is unusable.
    システムが使用できない。