本节对应书里的The logger component。
原文翻译整理如下:

在生产环境中,我们不能向客户抛出错误或空白页。我们避免出现这样的情况并在日志文件中记录错误。你将在下一章阅读到更多关于这个的信息。总之,我们将为依赖注入的容器实现一个自定义logger组件,捕捉异常,并记录他们。例如,下列代码:
1.直接使用下面的代码设置自定义logger组件:

<?php
$di['logger'] = function() {
$error_file = __DIR__.'/../logs/'.date("Ymd_error").'log';
return new \Phalcon\Logger\Adapter\File($error_file, array('mode' => 'a+'));
};

2.创建一个方法,该方法将抛出异常、捕获并记录,如下所示:

<?php
public function testLoggerAction()
{
try {
$nonExistingComponent = $this->getDI()->get('nonExistingComponent');
$nonExistingComponent->executeNonExistingMethod();
} catch (\Exception $e) {
$this->logger->error($e->getMessage());
return $this->response->redirect('error/500.html');
}
}

在前面的例子中,我们尝试执行一个不存在的方法,代码将捕捉到这个异常。它将记录报错,并将用户重定向到一个友好的错误页面,error/ 500.html。你会注意到我们的logger组件调用一个名为error的方法。还有其他方法,如,debug, info, notice, warning等等。

Logger组件具备事务化的特性。(Phalcon 存储日志到内存,之后,它将数据写入到相应的适配器。)例如如下面的代码片断:

<?php
$this->logger->begin();
$this->logger->error('Ooops ! Error !');
$this->logger->warning('A warning message');
$this->logger->commit();

Related Posts: 零基础学Phalcon 6 logger 组件 :