我正在尝试使用ExceptionListener类中的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);
}
}
侦听器工作正常,但在这种情况下,默认情况下不会将任何内容记录到dev.log
文件中(当然,日志记录已启用且功能正常)。
我尝试LoggerInterface
函数onKernelException
参数(自动装配?)但没有成功。
我应该在service.yaml
文件中进行一些额外的配置吗?
App\EventListener\ExceptionListener:
tags:
- { name: kernel.event_listener, event: kernel.exception }
答案 0 :(得分:3)
默认情况下在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);
}
}