我正在尝试使用ExceptionListener类中的logger服务记录一些信息,但我不了解如何访问/创建logger对象。
这是我的代码:
class ExceptionListener
{
public function onKernelException(GetResponseForExceptionEvent $event)
{
...
$exception = $event->getException();
if ($exception instanceof HttpExceptionInterface) {
// HTTP Exception (400, 401, 404, ...)
$response = new JsonResponse(...)
}
...
$event->setResponse($response);
}
}
Run Code Online (Sandbox Code Playgroud)
侦听器可以正常工作,但在这种情况下,默认情况下不会将任何日志记录到dev.log文件中(当然,日志记录已启用并且可以正常运行)。
我试图对函数使用LoggerInterface参数onKernelException(自动装配?),但没有成功。
我应该在service.yaml文件中进行一些其他配置吗?
App\EventListener\ExceptionListener:
tags:
- { name: kernel.event_listener, event: kernel.exception }
Run Code Online (Sandbox Code Playgroud)
在SF4上默认为自动装配,您应该能够将LoggerInterface注入到您的侦听器中,而无需进行进一步的配置,例如这样(然后在需要时调用$ this-> logger):
use Psr\Log\LoggerInterface;
class ExceptionListener
{
protected $logger;
public function __construct(LoggerInterface $logger) {
$this->logger = $logger;
}
public function onKernelException(GetResponseForExceptionEvent $event)
{
...
$exception = $event->getException();
if ($exception instanceof HttpExceptionInterface) {
// HTTP Exception (400, 401, 404, ...)
$response = new JsonResponse(...)
}
...
$event->setResponse($response);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
550 次 |
| 最近记录: |