この記事の目的
- Symfony3.4
- Monolog
- Apache
上記の構成で
- ERROR発生時はDEBUGログ以上を出力
- INFOログは常に出力する
のようにログ出力を設定する必要があったのですが、
ググってもそのまま流用できるような情報が無かったので残しておきます。
FingersCrossedHandler
でログ出力レベルを柔軟に
FingersCrossedHandler
を使用すれば、
特定のレベルを超えた場合のみログを出力することができますが、
デフォルトの設定だと正常終了時にログが何も出力されません。
常に出力したいログレベルがある場合は、このハンドラーのオプションで
passthru_level
を指定する必要があります。
また、
ERROR発生時はDEBUGログ以上を出力
こちらを満たすには
fingers_crossed
のaction_level
にerror
を指定、
nested
のlevel
にdebug
を指定する必要があります。
以下、具体的な設定例になります。
config.yml
に記述した内容
monolog:
handlers:
main:
type: fingers_crossed
action_level: error
handler: nested
passthru_level: info
nested:
type: rotating_file
path: '%kernel.logs_dir%/app.log'
level: debug
max_files: 7
console:
type: console
process_psr_3_messages: false
参考
さらに
ERROR以上のログが落ちた場合はINFOログ以上を出したいが、NOTICEログは常に出したいという場合があると思います。FingersCrossedHandler の constructor を見ると、常にログを落とす最低限のログレベルを指定できるようです。
SymfonyのMonologExtension
では
この辺でFingersCrossedHandler
の設定をしていて、
常に出力したいログのレベルについては、
passthru_level
で設定できることがわかります。