我正在使用Symfony 4,但我希望2和3都差不多。
迅速的独白处理程序产生的生产模式错误报告返回GET请求的完整请求URL,因此在开发中重现错误相当容易。
但是,如果这是POST请求,那么您会遇到麻烦,因为没有提供POST值。
我对错误处理和日志记录组件有所了解,但没有立即发现的东西。
还有其他人遇到此问题并找到解决方法吗?
答案 0 :(得分:1)
基于@Puya Sarmidani的评论...这是我最后所做的:
config / services.yaml:
App\Services\MonologExtraProcessor:
tags:
- { name: monolog.processor }
- { name: kernel.event_listener, event: kernel.request, method: onKernelRequest }
src / Services / MonologExtraProcessor.php:
namespace App\Services;
use Symfony\Component\HttpKernel\Event\GetResponseEvent;
class MonologExtraProcessor
{
private $postParams = null;
public function __invoke(array $record)
{
if ($this->postParams !== null) {
$record['extra']['postParams'] = $this->postParams;
}
return $record;
}
public function onKernelRequest(GetResponseEvent $event)
{
$postParams = $event->getRequest()->request->all();
$this->postParams = empty($postParams) ? null : serialize($postParams);
}
}
答案 1 :(得分:0)
是的,我对此类难以跟踪的问题使用了修复程序。
您可以在config_prod.yml
或 /config/packages/prod/monolog.yaml 中为symfony 4启用monolog swift处理程序。这样,当您遇到以下情况时,您将收到与开发人员模式相同的电子邮件:发生错误。 (取决于action_level)。
请参见下面的代码,获取symfony 4 (您首先需要安装monolog)
monolog:
handlers:
main:
type: fingers_crossed
# 500 errors are logged at the critical level
action_level: critical
# to also log 400 level errors (but not 404's):
# action_level: error
# excluded_404s:
# - ^/
handler: deduplicated
deduplicated:
type: deduplication
handler: swift
swift:
type: swift_mailer
from_email: '**FROM EMAIL**'
to_email: '**TO EMAIL**'
# or list of recipients
# to_email: ['dev1@example.com', 'dev2@example.com', ...]
subject: 'An Error Occurred! %%message%%'
level: debug
formatter: monolog.formatter.html
content_type: text/html