[Zend Framework] Zend_Log: エラーコントローラで受けたエラーをログ出力する

ErrorController を確認しながら、例外処理について調べていきます。
Zend Framework Version: 1.12.3

ErrorController を確認しているとログに関する記述がありました。
Zend_Log を使えそうなので動かしてみます。

ErrorController

zf で作成したプロジェクトで生成された ErrorController です。

function getLog() にこんな記述がありました。

application/controllers/ErrorController.php
$bootstrap = $this->getInvokeArg('bootstrap');

bootstrap を取得して、application.ini で設定したリソースを取得しようとしている模様。

application/controllers/ErrorController.php
$log = $bootstrap->getResource('Log');

Log という設定を取りに行っているようなので、application.ini にこの設定を追記することで動かせそうです。

application.ini

サンプルを使います。

application/configs/application.ini
; +-----+
; | Log |
; +-----+
resources.log.stream.writerName = "Stream"
resources.log.stream.writerParams.stream = APPLICATION_PATH "/../data/logs/application.log"
resources.log.stream.writerParams.mode = "a"
resources.log.stream.filterName = "Priority"
resources.log.stream.filterParams.priority = 7

追記モード (“a”)

EMERG   = 0;  // 緊急事態 (Emergency): システムが使用不可能です
ALERT   = 1;  // 警報 (Alert): 至急対応が必要です
CRIT    = 2;  // 危機 (Critical): 危機的な状況です
ERR     = 3;  // エラー (Error): エラーが発生しました
WARN    = 4;  // 警告 (Warning): 警告が発生しました
NOTICE  = 5;  // 注意 (Notice): 通常動作ですが、注意すべき状況です
INFO    = 6;  // 情報 (Informational): 情報メッセージ
DEBUG   = 7;  // デバッグ (Debug): デバッグメッセージ

/data/logs にディレクトリを用意します。
また、ファイルの書き込みができるよう、パーミッションを変更します。

出力結果

エラーを起こして、ログを出力させてみます。

data/logs/application.log
2013-07-29T22:02:41+09:00 CRIT (2): Application error
2013-07-29T22:02:41+09:00 CRIT (2): Request Parameters