tetsunosukeのnotebook

tetsunosukeのメモです

[PHP] Zend_Log_Formatter_Simple では日付フォーマットを書き換えられない?

これ有名?

Zend_Log_Formatter_Simpleは、デフォルトで、%timestamp% %priorityName% (%priority%) %message% . PHP_EOLというフォーマットだが、この中身を細かく書き換えることはできないらしい。

Log.phpの中で、timestampに関しては特に下記の記述となっている

134         // pack into event required by filters and writers
135         $event = array_merge(array('timestamp'    => date('c'),
136                                     'message'      => $message,
137                                     'priority'     => $priority,
138                                     'priorityName' => $this->_priorities[$priority]    ),                              
139                               $this->_extras);

ということは%timestamp% のところをいくらがんばっても書き換えは不能ということだ。

仕方がないのでこうする。

        $log_format = date("Y/m/d H:i:s") . " [%priorityName%]: %message%" . PHP_EOL;
        $formatter = new Zend_Log_Formatter_Simple($log_format);


本質的な解決方法はこうするのかな。

$logger->setEventItem("datetime", date("Y/m/d H:i:s"));
$log_format = "%datetime% ....";