monologの仕組みを調べてみた

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