1

私は何年にもわたって (0.9 から) Zend Framework を使用して開発してきましたが、それ以来、この問題は私の神経を悩ませています。

FirePHP の助けを借りて、Zend Framework 1.11 アプリケーションから FireBug コンソールにメッセージを出力したいと考えています。デフォルトの application.ini ファイルを使用して Firebug を構成しました。

resources.log.firebug.writerName = "Firebug"
resources.log.firebug.filterName = "Priority"
resources.log.firebug.filterParams.priority = 7

無効なアクションを呼び出すか、次のような例外を明示的にスローすることにより、IndexController などの FireBug でメッセージを表示できるようになりました。

throw new Exception("This is my error message", E_USER_ERROR);

これにより、デフォルトの ErrorController が例外を処理し、スタック トレースとリクエスト パラメータを表示します。

リクエストパラメータ

デフォルトの ErrorController は、すべてのメッセージを自動的に FireBug に記録します。

ファイアーバグの成功

ただし、ご覧のように、スタック トレースや要求パラメーターなどの追加情報は表示されませんが、メインページにアクセスしたときの FireBug のスクリーンショットに見られるように、FireBug は表示することができます。

詳細な Firebug ウィンドウ

ドキュメントに記載されているように、Zend_Log_Writer_Firebug は、defaultPriorityStyle がTRACE などに設定されているすべてのwriterParamsを無視します。

ここで私の質問: firePHPcoreを使用せずに Zend Framework 自体に付属のツールを使用して、(最後の図に示すように) 余分なデータも送信するように Zend Framework を構成する方法はありますか?

よろしくお願いいたします。

4

1 に答える 1

1

zf create project関係する行がこれらであるため、生成されたデフォルトのエラーコントローラではあなたが言っていることを達成できないと思います

// Log exception, if logger available
if ($log = $this->getLog()) {
    $log->log($this->view->message, $priority, $errors->exception);
    $log->log('Request Parameters', $priority, $errors->request->getParams());
}

つまり、デフォルトのエラーコントローラは、メッセージ、優先度、例外のみをログに記録し、firebugwriterはそれらを表示された方法でフォーマットします。

あなたが言っていることを達成するにはZend_Log_Writer_Firebug、ファイアバグコンソールを使用してスタックトレースを表示するためにクラスをハックする必要があります。あるいは、ロガーに追加されたカスタムフォーマッタークラスで遊ぶことができます。

私は、メールメッセージにフォーマットされた例外スタックトレースを表示するメールロガーを作成し、本番環境で電子メールで送信された例外のフォーマットされたログを取得するために使用することで、同様のことを行いました。ここGithubで見つけることができ、ここでその使用法を見つけることができます。

さらに、クラス内のZFクラスを使用してfirebugコンソールを使用する方法の例を見ることができますZend_Db_Profiler_Firebug

したがって、質問に答えるために、カスタムクラスとそれをログオブジェクトへのライターまたはフォーマッターとして作成せずにそれを行うことはできません。また、application.iniファイルを使用するだけでそれを行うこともできません。

于 2011-08-19T00:14:56.780 に答える