1

我一直在使用 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 处理异常并显示堆栈跟踪和请求参数:

请求参数

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

萤火虫成功

但是,如您所见,堆栈跟踪或请求参数等额外信息并未显示,尽管 FireBug 非常有能力这样做,如访问主页时的 FireBug 屏幕截图所示:

详细的 Firebug 窗口

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

现在我的问题是:有什么方法可以配置 Zend Framework 也发送额外的数据(如上图所示),而不必使用firePHPcore,而是使用 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());
}

即默认错误控制器仅记录消息、优先级和异常,并且萤火虫编写器以您显示的方式格式化它们。

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

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

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

因此,要回答您的问题,不,如果不编写一些自定义类并将其作为日志对象的编写器或格式化程序,您就无法做到这一点,也不能仅使用application.ini文件来做到这一点。

于 2011-08-19T00:14:56.780 回答