与Zend_Log_Writer_Firebug一起使用时,FirePHP不显示额外内容

时间:2011-08-17 16:26:01

标签: php zend-framework firebug firephp zend-log

我已经使用Zend Framework开发了很长时间(从0.9开始),从那以后这个问题一直困扰着我。

我希望借助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

我现在可以在FireBug中看到消息,例如在IndexController中,通过调用无效操作或显式抛出异常,如

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

这导致默认的ErrorController处理Exception并显示堆栈跟踪和请求参数:

Request Parameters

默认的ErrorController还会自动将所有消息记录到FireBug:

Firebug Success

但是,正如您所看到的,虽然FireBug完全能够这样做,但是没有显示堆栈跟踪或请求参数等额外信息,如访问主页时在FireBug的屏幕截图中所示: / p>

Detailed Firebug window

正如文档所述,Zend_Log_Writer_Firebug将忽略所有writerParams,defaultPriorityStyle可以设置为TRACE或类似的东西。

现在我的问题:有没有办法配置Zend Framework也可以发送额外的数据(如上一张图所示)而不必使用firePHPcore,但有Zend Framework本身附带的工具?

最好的问候和提前谢谢!

1 个答案:

答案 0 :(得分: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());
}

即。默认的错误控制器只记录消息,优先级和异常以及firebug writer以你显示的方式格式化它们。

要实现您所说的内容,您应该破解Zend_Log_Writer_Firebug类以使用firebug控制台显示堆栈跟踪,或者您可以使用添加到记录器的自定义格式化程序类。

我通过创建一个邮件记录器来做类似的事情,该邮件记录器在邮件消息中显示格式化的异常堆栈跟踪,并在生产中用于获取电子邮件发送的异常的格式化日志。您可以找到here on Githubhere找到它的用法。

此外,您可以看到如何使用Zend_Db_Profiler_Firebug类中的ZF类来使用firebug控制台的示例。

所以要回答你的问题,如果不编写一些自定义类并将它作为日志对象的编写器或格式化程序,你就不能这样做,也不能只使用application.ini文件来实现。