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
							