忍者ブログ
[PR]
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。



2017/05/27 13:09 |
ZF2.0 Zend\Log
Zend\Logを使うことで、簡単に、統一的なログを出力することができます。
<?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


2012/10/19 23:06 | Comments(0) | PHP

コメント

コメントを投稿する






Vodafone絵文字 i-mode絵文字 Ezweb絵文字 (絵文字)



<<Minecraft1.3.2 MultiTools V1 万能ツール | HOME | Minecraft1.3.2 HardcorePlus v1.0.0 その2 さらに難易度を上昇>>
忍者ブログ[PR]