読者です 読者をやめる 読者になる 読者になる

10分ぐらいで学べるSymfony2 〜monolog理解編〜

自分がmonologについて社内のwikiにまとめた内容を公開してみます。


monologとは

PythonのLogbookライブラリにインスパイヤを受けて作ったライブラリだそうです。
(みたいな事がreadmeの下の方に書いてありました)
Symfony2ではこのライブラリをログ出力の標準ライブラリとして利用しております


monologを使う上での理解すべき用語

Handler

Handlerとはログの出力する機能です。
普通にファイルに出力したければ「StreamHandler」を指定し、
メールにログを出力したければ「SwiftMailerHandler」を指定します。

Formatter

Handlerが出力する際のフォーマット設定機能です。
通常の行フォーマットで出力したい場合は「LineFormatter」を使いますが、
(パラメータで出力書式は変更可能)
json形式で出力したい場合は「JsonFormatter」を利用するなどで使い分けます。


Processor

Processorとはメッセージに付加情報を追加する機能となります。
通常は「message」を指定してログ出力することになりますが、
セッショントークンなど付加情報を自動で出力したい場合、Processor機能を利用することで
拡張領域の「extra」に セッショントークンを設定してFormatterで出力します。

$ vi ./vendor/monolog/src/Monolog/Logger.php
164         $record = array(
165             'message' => (string) $message,
166             'context' => $context,
167             'level' => $level,
168             'level_name' => self::getLevelName($level),
169             'channel' => $this->name,
170             'datetime' => new \DateTime(),
171             'extra' => array(),
172         );


ログ出力レベル

monologに限った話ではないですが、ログを出力する際に出力レベルを指定します。
ハンドラに設定されているログレベル以上の値ならばログ出力するのような制御になっています。

$ vi ./vendor/monolog/src/Monolog/Logger.php
 68         100 => 'DEBUG',
 69         200 => 'INFO',
 70         300 => 'WARNING',
 71         400 => 'ERROR',
 72         500 => 'CRITICAL',
 73         550 => 'ALERT',