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

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

[markdown]

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

## ErrorController

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

> * [zfSkelton/application/controllers/ErrorController.php at master · DriftwoodJP/zfSkelton · GitHub](https://github.com/DriftwoodJP/zfSkelton/blob/master/application/controllers/ErrorController.php)

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

“`php:application/controllers/ErrorController.php
$bootstrap = $this->getInvokeArg(‘bootstrap’);
“`

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

> * [【Zend】処理中にbootstrapを取得する方法 | Life](http://life.co-hey.com/2010/03/%E3%80%90zend%E3%80%91%E5%87%A6%E7%90%86%E4%B8%AD%E3%81%ABbootstrap%E3%82%92%E5%8F%96%E5%BE%97%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/)

“`php:application/controllers/ErrorController.php
$log = $bootstrap->getResource(‘Log’);
“`

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

## application.ini

> * [利用できるリソースプラグイン – Zend_Application – Zend Framework](http://framework.zend.com/manual/1.12/ja/zend.application.available-resources.html#zend.application.available-resources.log)

サンプルを使います。

“`php: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
“`

> * [概要 – Zend_Log – Zend Framework](http://framework.zend.com/manual/1.12/ja/zend.log.overview.html)

追記モード (“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 にディレクトリを用意します。
また、ファイルの書き込みができるよう、パーミッションを変更します。

> * [推奨されるプロジェクト・ディレクトリ構造 – Zend Framework MVC アプリケーションのために推奨されるプロジェクト構造 – Zend Framework](http://framework.zend.com/manual/1.12/ja/project-structure.project.html)

## 出力結果

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

“`: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
“`

[/markdown]