独白:使用保留的低级日志记录将错误发送到Sentry

时间:2018-07-12 16:28:53

标签: php sentry monolog

目标:

我想将所有ERROR + Monolog记录与较低级别的记录一起发送给Sentry(以便更轻松地调试正在发生的事情),它们应该全部作为一个事件发送。

我所拥有的:

我有一个config/packages/prod/monolog.yaml的Symfony4应用程序:

monolog:
    handlers:
        # there is also fingers_crossed for file logging, but it is rather not related

        sentry_buffer:
            type: fingers_crossed
            action_level: error
            handler: sentry_transparent
            # ignore records logged by exception listener
            channels: ["!exceptions"]
        sentry_transparent:
            type: whatfailuregroup
            members: [sentry]
        sentry:
            type:  raven
            # Use Sentry client registered by SentryBundle
            client_id: sentry.client
            level: debug
            auto_log_stacks: true

我有一个自定义的异常侦听器,它创建JSON响应,但是在将其发送之前,还会将错误记录到exceptions通道中(因此我在fingers_crossed处理程序中排除了此通道,所以不会重复。

它在本地运行-仅当在Monolog中出现ERROR +记录并且所有收集的日志都附加在记录的上下文中时,才会创建Sentry事件。

以某种方式在生产中我们得到了info级的maaaaaaany事件,但这没有任何意义:

enter image description here

这些事件与任何错误都没有关系,但是在面包屑中,我看到触发了一些弃用错误:

enter image description here

我曾尝试像trigger_error中那样,用ProcessBuilder来重现(来自面包屑),但是无论如何我在哨兵中都没有得到INFO事件。

这些事件来自运行时间较长的流程(使使用者入队),但是我完成了生产中的所有步骤(请求,处理队列),而在生产实例中却没有得到结果。

有什么建议吗?我该如何改善配置以实现我们所需的功能,而又不向我们的哨兵发送垃圾邮件呢?

1 个答案:

答案 0 :(得分:0)

解决方案是在x = *p; y = xBufferHandler之间添加FingersCrossedHandler

WhatFailureGroupHandler