Zend_Logでyyyymmdd.log形式の日別のログファイルの生成  2009年5月12日

テキストログを出力するZend_Log_Writer_Streamは、指定したファイルに対してログを出力する機能を提供してくれます。

ログファイルを日付別で分ける必要があったため、yyyymmdd.log形式のログを出力するwriterを書いてみました。

実際の実装はBsheの以下のクラスを参考にしてください。(ダウンロードはこちら

  • ●Bshe_Log_Writer_Dailystream

構造は至極単純で、以下のようにZend_Log_Writer_Streamを定義するだけでOKです。

class Bshe_Log_Writer_Dailystream extends Zend_Log_Writer_Stream
{
    /**
     * Class Constructor
     *
     * @param string $path ログファイルを保存するパス
     * @param string $suffix ログファイルの頭にセットする文字列
     * @param mode $mode
     */
    public function __construct($path, $suffix = ”, $mode = ‘a’)
    {
        try {
            if(!is_dir($path)) {
                throw New Zend_Log(‘ログ保存先はディレクトリで指定してください。’);
            }

            parent::__construct($path . ‘/’ . $suffix . date(‘Ymd’) . ‘.log’, $mode);
        } catch (Exception $e) {
            throw $e;
        }
    }
}

この例では、引数にログファイルのパスや、ログファイルのファイル名を「[任意の文字列]yyyymmdd.log」のように任意の文字を指定できるようにしてあります。

このクラスを

$logger = new Zend_Log();

$writer = new Bshe_Log_Writer_Dailystream([ログファイルパス], [ログファイル名の頭の任意の文字列]);
$logger->addWriter($writer);

というように指定してあげることで、日付別のログファイルが生成されます。

 

このエントリをはてなブックマークに登録 このエントリをBuzzurlにブックマーク Yahoo!ブックマークに登録 このエントリをlivedoorクリップに登録 Deliciousにブックマーク

コメントを投稿