ログ出力時と同時にメールで通知する方法
保守とかしているとログは非常に重要。
ログインできないとか、エラーが出たんだけどとかユーザーからの問い合わせで調査する事が良くある。
それとは別にクリティカルなエラーとかが出た場合はログを出力しつつ、通知メールを送信したい場合がある。
そういう場合は、 Zend_Log_Writer_Mock を使用すると便利。
30.2.5. モックによるテスト
http://framework.zend.com/manual/ja/zend.log.writers.html#zend.log.writers.mock
Zend_Log_Writer_Mock は非常にシンプルなライターです。 受け取った生のデータを配列に格納し、それを public プロパティとして公開します。
<?php $writer = new Zend_Log_Writer_Stream('/path/to/log'); $logger = new Zend_Log($writer); $mock = new Zend_Log_Writer_Mock(); $logger->addWriter($mock); $logger->log('hogefuga'); // 最後に記録されたログを取り出す。 $message = end($mock->events); // メール送信処理
最後に記録されたログを取り出して、あとはメールを送信するだけ。
もちろん上のような例だと再利用が難しいので、 Zend_Log を継承した独自のクラスとかを使ってそこに書いている。