SOHOゆいちのサイト
Zend_Logは非常に便利なログ記録クラスだと思います。BsheでもいくつかWriterを作成して、Syslogやメール、yyyymmdd.log形式でのファイル保存などを実装しています。
Zend_Logの利用は基本的にインスタンスを利用して行うのですが、ログを書き出す箇所でインスタンスをレジストリから呼び出したり、作成したりするのは面倒です。
そこで、スタティックに呼び出せる形にZend_Logクラスを拡張してみました。
前提として
実際の実装はBsheの以下のクラスを参考にしてください。Bsheでは、さらにログ出力を簡素化するのに、ログクラスの呼ばれたファイル名、行番号、引数に配列を取れるなどの拡張を施しています。(ダウンロードはこちら)
class Bshe_Log extends Zend_Log
{/**
* ログクラス保持用
*
* @var unknown_type
*/
static protected $_logger = null;/**
* ログクラスをスタティックに登録
*
* @param unknown_type $logger
*/
static public function setLogger($logger)
{
self::$_logger = $logger;
}/**
* logクラスのインスタンスを返す。
*
* @return Bshe_Log
*/
static public function getLogger()
{
return self::$_logger;
}/**
* スタティックに保存されたログクラスを利用してログを記録
* ログクラスがセットされていない場合は何もしない
*
* @param unknown_type $message
* @param unknown_type $priority
*/
static public function logWrite($message= ”, $priority = Zend_Log::INFO)
{
try {
if (self::$_logger !== null) {
$logger = self::$_logger;
$logger->log($message, $priority);return;
}
} catch (Exception $e) {
throw $e;
}
}
}
実装はいたって単純です、(ただ、Writerによっては、上記のような実装だと問題が出るケースがあるかもしれません。)
こうしておくことで、プログラムの各所から
Bshe_Log::logWrite(‘メッセージ’);
とすることでログが出力できるようになります。
www.bshe.org (created by itassist.info)