Symfony 独白手指交叉处理程序不排除指定的 http 代码

Symfony monolog fingers crossed handler not excluding specified http codes

我正在使用手指交叉处理程序来缓冲日志消息,直到发生错误。下面是我的配置:

monolog:
  handlers:
    buffer:
      action_level: error
      excluded_http_codes: [401, 403, 404]
      handler: logger
      type: fingers_crossed
    logger:
      formatter: monolog.formatter.json
      include_stacktraces: true
      level: info
      path: php://stderr
      type: stream

我发现应该匹配 excluded_http_codes 的异常仍在输出到我的日志中。

我深入研究了 Symfony\Bridge\Monolog\Handler\FingersCrossed\HttpCodeActivationStrategy class,发现当异常到达 isHandlerActivated 方法时,$this->requestStack->getMasterRequest() 正在返回 null

有什么我明显做错的地方吗?

您的错误是否可能发生在不同的处理程序中?如果我没记错的话,你只会在你的缓冲区处理程序中阻止几个错误,并在你的记录器处理程序中阻止 none

自从更新我的作曲家包后,这个问题就解决了。我不确定具体是哪个包造成的