LaravelやSynfonyなどPHP系のフレームワークに組み込まれているmonologの仕組みを理解しようとしたら思っていた以上にHandlerというlogの出力先の設定などをするためのものが元々用意されているのがいいなとおもた。
抑えるべき概念
- Handler
- Formatter
- Logger
- Processer
Handler
log出力先、出力するlog levelなどのlogに関する設定を決める。
DynamoDBHandler, RedisHandler, ElasticSearchHandlerなどが用意されている。
出力されたlogのハンドリングが主な責務。
Formatter
HandlerにアタッチすることでHandlerから出力されるlogのフォーマットをカスタマイズできる。
JsonFormatterやElasticSearchFormatterなどが存在する。デフォルトはlineFormatterとなっている。
Logger
logを出力するチャンネルを作成し、Handlerを紐づけてlogをHandler通りに出力してもらうようになっている。
例えば、dbChannelをnew Loggerで作成し、このチャンネルのlogはDynamoDBHandler,RedisHandle,MongodbHandlerでハンドリングする。というようなイメージ。
Processer
出力するlogに情報(データ)を追加することができる。
GitProcesserは現在のブランチ情報をlogに追加してくれる。MemoryUsageProcesserは現在のメモリ使用量をlogに付与してくれる。などなど
公式のdoc
monolog/doc/02-handlers-formatters-processors.md at main · Seldaek/monolog · GitHub