Zend\Logを使うことで、簡単に、統一的なログを出力することができます。
予めデータベースやメール、SyslogやFirebugなんて出力先が用意されています。
またWriterInterfaceを継承して適当なログ出力先を追加することもできます。
今回はファイルに保存するStreamに対してファイル名のかわりに'php://output'を指定し、ブラウザに直接出力しています。
Zend\Log\Filterは、出力するログのフィルタリングを行います。
正規表現などのフィルタがあります。
今回使用したPriorityはログレベルによるフィルタで、NOTICE以上のログが出力されるようになります。
具体的にはDEBUGとINFOが非表示になります。
ログを出力する条件のデフォルトの演算子は'<='で、Zend\Log\Filter\Priorityの第二引数で指定可能です。
'>'とすると逆にDEBUGとINFOだけが表示されるようになります。
フィルタは複数設定することが可能で、「○○という文字が含まれる、CRIT以上のログ」といった条件が設定可能です。
Zend\Log\Formatterは、出力する文字の形式です。
Zend\Log\Formatter\Simpleは直接文字列を指定する形式で、他にはXML形式やPHPのエラー、例外フォーマットなどがあるようです。
フォーマッタを経由することで、統一的なログの形式を保証することが可能になります。
最後にZend\Log\Loggerにログを突っ込むと、これら設定に沿ったログを出力してくれるようになります。
今回はブラウザに、以下のように表示されます。
これでもうよくわからないfunction e()とかそういう代物に頼る必要がなくなりますね。
<?php require_once('path/to/channel/vendor/autoload.php'); //ログの出力先 今回はブラウザに出力 $zendLogWriter = new Zend\Log\Writer\Stream('php://output'); //フィルタ これより低いログは記録されない $zendLogFilter = new Zend\Log\Filter\Priority(Zend\Log\Logger::NOTICE); $zendLogWriter->addFilter($zendLogFilter); //フォーマッタ 指定した形式で出力 $zendLogFormatter = new Zend\Log\Formatter\Simple('%timestamp% %priorityName% (%priority%): %message%<br />', 'Y/m/d H:i:s'); $zendLogWriter->setFormatter($zendLogFormatter); //ログ $zendLogger = new Zend\Log\Logger(); $zendLogger->addWriter($zendLogWriter); //ログを出力 $zendLogger->debug ('デバッグメッセージ'); $zendLogger->info ('情報'); $zendLogger->notice('注意'); $zendLogger->warn ('警告'); $zendLogger->err ('エラー'); $zendLogger->crit ('致命的エラー'); $zendLogger->alert ('アラート'); $zendLogger->emerg ('緊急');Zend\Log\Writerで、ログの出力先を指定します。
予めデータベースやメール、SyslogやFirebugなんて出力先が用意されています。
またWriterInterfaceを継承して適当なログ出力先を追加することもできます。
今回はファイルに保存するStreamに対してファイル名のかわりに'php://output'を指定し、ブラウザに直接出力しています。
Zend\Log\Filterは、出力するログのフィルタリングを行います。
正規表現などのフィルタがあります。
今回使用したPriorityはログレベルによるフィルタで、NOTICE以上のログが出力されるようになります。
具体的にはDEBUGとINFOが非表示になります。
ログを出力する条件のデフォルトの演算子は'<='で、Zend\Log\Filter\Priorityの第二引数で指定可能です。
'>'とすると逆にDEBUGとINFOだけが表示されるようになります。
フィルタは複数設定することが可能で、「○○という文字が含まれる、CRIT以上のログ」といった条件が設定可能です。
Zend\Log\Formatterは、出力する文字の形式です。
Zend\Log\Formatter\Simpleは直接文字列を指定する形式で、他にはXML形式やPHPのエラー、例外フォーマットなどがあるようです。
フォーマッタを経由することで、統一的なログの形式を保証することが可能になります。
最後にZend\Log\Loggerにログを突っ込むと、これら設定に沿ったログを出力してくれるようになります。
今回はブラウザに、以下のように表示されます。
2012/01/01 10:00:00 NOTICE (5): 注意 2012/01/01 10:00:00 WARN (4): 警告 2012/01/01 10:00:00 ERR (3): エラー 2012/01/01 10:00:00 CRIT (2): 致命的エラー 2012/01/01 10:00:00 ALERT (1): アラート 2012/01/01 10:00:00 EMERG (0): 緊急Zend\Log\Formatter\Simpleの書式に沿って、Zend\Log\Filter\Priorityのフィルタに従い、Zend\Log\Writer\Streamで指定した出力先に出力されました。
これでもうよくわからないfunction e()とかそういう代物に頼る必要がなくなりますね。
PR