Zend framework 在Zend Framework 1中记录错误的最佳方法是什么?

Zend framework 在Zend Framework 1中记录错误的最佳方法是什么?,zend-framework,error-handling,Zend Framework,Error Handling,我们在Zend Framework(v1)中构建了一个应用程序,在设置错误报告和日志方面没有做很多工作。有没有什么方法可以在代码没有太多更改的情况下得到一些级别或错误报告?是否有可用的ErrorHandler插件 基本要求是记录控制器内发生的错误、丢失的控制器、格式错误的URL等 我还希望能够在控制器中记录错误。使用错误控制器是否可以帮助我识别并记录控制器中的错误?如何以最少的更改来实现这一点?我将使用以下策略 如果您在应用程序中使用Zend_应用程序,则有一个用于日志记录的资源。您可以阅读有关

我们在Zend Framework(v1)中构建了一个应用程序,在设置错误报告和日志方面没有做很多工作。有没有什么方法可以在代码没有太多更改的情况下得到一些级别或错误报告?是否有可用的ErrorHandler插件

基本要求是记录控制器内发生的错误、丢失的控制器、格式错误的URL等

我还希望能够在控制器中记录错误。使用错误控制器是否可以帮助我识别并记录控制器中的错误?如何以最少的更改来实现这一点?

我将使用以下策略

如果您在应用程序中使用Zend_应用程序,则有一个用于日志记录的资源。您可以阅读有关资源的更多信息

我的建议是在写入db或日志文件流之间进行选择。如果你打算使用某种web界面,把你的日志写到数据库中,如果没有,一个平面文件就可以了

您可以使用这个简单的示例将日志记录设置为文件

  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 = 4
此外,我建议将关键错误发送到一个电子邮件帐户,由您的开发团队定期检查。我工作的公司把他们送到errors@companyname.com这将转发给生产站点的所有开发人员

据我所知,您无法通过工厂设置邮件编写器,因此该资源对您没有任何好处,但您可能可以在ErrorController或引导程序中进行设置

  $mail = new Zend_Mail();

  $mail->setFrom('errors@example.org')
       ->addTo('project_developers@example.org');
  $writer = new Zend_Log_Writer_Mail($mail);
  // Set subject text for use; summary of number of errors is appended to the
  // subject line before sending the message.
  $writer->setSubjectPrependText('Errors with script foo.php');

  // Only email warning level entries and higher.
  $writer->addFilter(Zend_Log::WARN);
  $log = new Zend_Log();
  $log->addWriter($writer);

  // Something bad happened!

  $log->error('unable to connect to database');

  // On writer shutdown, Zend_Mail::send() is triggered to send an email with
  // all log entries at or above the Zend_Log filter level.
您需要对上面的示例做一些工作,但最佳解决方案是获取引导文件中的日志资源,并向其中添加电子邮件编写器,而不是创建第二个日志实例。

您可以使用。正如您在文档页面上看到的,有一个示例检查缺少的控制器/操作,并向您展示如何设置适当的标题


然后,您可以使用Zend_Log将错误消息记录到磁盘/db/mail

@markus-plugin似乎已经消失了。我想那是很久以前的事了。@SimonEast是的,我删除了这条评论。无论如何,没有人应该再使用ZF1了……不幸的是,我们还有一个遗留的ZF1应用程序需要维护。总有一天会重建,但还没有预算@markus@SimonEast我认为我的zend sentry库的zf1遗留分支应该可以正常工作:@SimonEast如果需要更新,请告诉我,或者更好,如果您需要更新到最新的raven版本,请提交一个请求。