API 来自请求的平台日志记录 Headers
API Platform Logging Headers from requests
我在生产服务器上遇到身份验证问题,该问题很可能与 non-code 相关,而是 IT 配置问题...
为了证明这一点,我想 检查 API 平台在尝试获取数据时是否收到授权 header。我没有在 API 平台文档中找到任何关于日志的信息。 使用 Symfony 日志系统记录 API 请求及其 headers 的正确方法是什么,知道我无权访问实际的控制器代码因为它纯粹是使用实体上的 APIRessource 注释配置的?
明确地说,在本地一切正常,我不是在这里寻找解决我的问题的方法,只是一种更改日志格式或使用 [ 将日志添加到传入请求的干净方法=25=]平台.
您可以为 kernel.terminate 事件创建一个侦听器,它将记录请求和响应数据。像这样。
monolog.yaml
monolog:
handlers:
request_log:
type: rotating_file
max_files: 90
level: debug
path: '%kernel.logs_dir%/request/%kernel.environment%.log'
channels: request_log
services.yaml
App\EventListener\LogRequestAndResponseEventListener:
tags:
- { 'name': 'monolog.logger', 'channel': 'request_log' }
- { 'name': 'kernel.event_listener', 'event': 'kernel.terminate', 'method': 'onKernelTerminate' }
监听器
namespace App\EventListener;
use Psr\Log\LoggerInterface;
use Symfony\Component\HttpKernel\Event\TerminateEvent;
class LogRequestAndResponseEventListener
{
private $logger;
public function __construct(LoggerInterface $logger)
{
$this->logger = $logger;
}
public function onKernelTerminate(TerminateEvent $event)
{
$request = $event->getRequest();
$response = $event->getResponse();
$this->logger->info('data', [
'route' => $request->getMethod() . ' ' . $request->getRequestUri(),
'status' => $response->getStatusCode(),
'request body' => $request->request->all(),
'response' => json_decode($response->getContent(), true),
'headers' => $request->headers->all(),
]);
}
}
我在生产服务器上遇到身份验证问题,该问题很可能与 non-code 相关,而是 IT 配置问题...
为了证明这一点,我想 检查 API 平台在尝试获取数据时是否收到授权 header。我没有在 API 平台文档中找到任何关于日志的信息。 使用 Symfony 日志系统记录 API 请求及其 headers 的正确方法是什么,知道我无权访问实际的控制器代码因为它纯粹是使用实体上的 APIRessource 注释配置的?
明确地说,在本地一切正常,我不是在这里寻找解决我的问题的方法,只是一种更改日志格式或使用 [ 将日志添加到传入请求的干净方法=25=]平台.
您可以为 kernel.terminate 事件创建一个侦听器,它将记录请求和响应数据。像这样。
monolog.yaml
monolog:
handlers:
request_log:
type: rotating_file
max_files: 90
level: debug
path: '%kernel.logs_dir%/request/%kernel.environment%.log'
channels: request_log
services.yaml
App\EventListener\LogRequestAndResponseEventListener:
tags:
- { 'name': 'monolog.logger', 'channel': 'request_log' }
- { 'name': 'kernel.event_listener', 'event': 'kernel.terminate', 'method': 'onKernelTerminate' }
监听器
namespace App\EventListener;
use Psr\Log\LoggerInterface;
use Symfony\Component\HttpKernel\Event\TerminateEvent;
class LogRequestAndResponseEventListener
{
private $logger;
public function __construct(LoggerInterface $logger)
{
$this->logger = $logger;
}
public function onKernelTerminate(TerminateEvent $event)
{
$request = $event->getRequest();
$response = $event->getResponse();
$this->logger->info('data', [
'route' => $request->getMethod() . ' ' . $request->getRequestUri(),
'status' => $response->getStatusCode(),
'request body' => $request->request->all(),
'response' => json_decode($response->getContent(), true),
'headers' => $request->headers->all(),
]);
}
}