プライオリティで考えるとMVCモデル部分、DB、Log、Exceptionが優先度高いかなーと。
どっからおさえようかと思いMVCのとこを触ったんだけど、まだ掴めきれてない。
というかZendデフォルト機能を周到しつつSmartyを入れようとしたらあんましキレイ
にならない。。。サンプルをスコーンと入れても、実際に開発するとデフォルトView
を殺しつつ、自分でrender()とか書かないといけない。しかもデフォルトのViewを殺して
しまうのでhelper、filterが死んでしまう。勿体無い。なのでちょっとおあずけ。
はじめはLogからいきましょう。DBと違って環境も要らんしねw
Zend_Logを見てみましたが、ドフォルトでも良い感じ。
ちょっと拡張すれば、十分に運用できるんじゃまいか!?
DBに突っ込む事もしてくれるけど、最初はシンプルにファイル書き出し。
基本的には以下を組み合わせてって事かな。
Zend_Log.......................ログクラス
Zend_Log_Writer_Abstract.......実際にファイル書き込みや、書き込みログ生成
Zend_Log_Formatter_Interface...ログの形式を定義。Writerに追加。
Zend_Log_Filter_Interface................保存するログのフィルター。Writer、Logに設定可能
Logでまずやりたいのが
1.デバッグ、運用、エラーとログレベルでファイルを分ける。
2.[1]で分けたファイルそれぞれのログ形式を変える。
追加してやりたいのが、
3.logメソッドをラップしてログレベル毎にメソッド用意(DEBUGならdebug()な感じ)
4.メッセージIDをLogに渡して、事前に作成したメッセージデータからメッセージ取得
[3]は好みw 難しくないけどね~。
[4]はソースコードにメッセージベタ書きになるのが嫌なはず。
まずは[1]からログの形式Formatterを作成、Filterで
Writerのインスタンスを3つ生成。WriterはZend_log_Writer_Streamを使用。
$debugWriter = new Zend_log_Writer_Stream('./debug.log'); $infoWriter = new Zend_log_Writer_Stream('./info.log'); $errorWriter = new Zend_log_Writer_Stream('./error.log');
ログレベルで振り分けるFilterを作り、Writerに追加
振り分けはdebug.logはDEBUG、info.logはINFO~WARN、error.logはERR~と考えると
$debugFilter = new Zend_Log_Filter_Priority(Zend_Log::DEBUG ,"=="); $debugWriter->addFilter($debugFilter); $infoStartFilter = new Zend_Log_Filter_Priority(Zend_Log::INFO); $infoEndFilter = new Zend_Log_Filter_Priority(Zend_Log::WARN ,">="); $infoWriter->addFilter($infoStartFilter); $infoWriter->addFilter($infoEndFilter); $errorFilter = new Zend_Log_Filter_Priority(Zend_Log::ERR); $errorWriter->addFilter($errorFilter);INFO~WARNの範囲制限を心配したけど、
writerとFilterが受け入れるように出来てたのでOKw
writerが出来上がったので、Logに追加。
Logに追加
$logger = new Zend_Log(); $logger->addWriter($debugWriter); $logger->addWriter($infoWriter); $logger->addWriter($errorWriter);はい、いっちょあがり♪
実行すると、それぞれのログファイルにかかれます。
//debug.logへ $logger->log('debug message',Zend_Log::DEBUG); //info.logへ $logger->log('Informational message',Zend_Log::INFO); $logger->log('notice message',Zend_Log::NOTICE); $logger->log('warning message',Zend_Log::WARN); //error.logへ $logger->log('error message',Zend_Log::ERR); $logger->log('emergency message',Zend_Log::EMERG);今日はこんぐらいにしとこうかな。
0 件のコメント :
コメントを投稿