繁体   English   中英

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

[英]Monolog: Send errors to Sentry with preserved lower-level log records

目标:

我想将所有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事件,这没有任何意义:

在此处输入图片说明

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

在此处输入图片说明

我试图像在ProcessBuilder (通过面包屑)那样使用trigger_error重现此问题,但是无论如何我在哨兵中都没有获得INFO事件。

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

有什么建议吗? 我如何才能改善配置以实现我们所需的功能,却又不会在哨兵中散布我们不想要的事件?

解决的办法是增加BufferHandler之间FingersCrossedHandlerWhatFailureGroupHandler

sentry_wait_for_error:
    type:         fingers_crossed
    action_level: error
    handler:      sentry_buffer
    excluded_http_codes:
        4xx: ~
sentry_buffer: # All records must be sent at once!
    type:    buffer
    handler: sentry_failure_handler
sentry_failure_handler:
    type: whatfailuregroup
    members: [sentry]
sentry:
    type:  raven
    dsn: '%env(SENTRY_DSN)%'
    level: debug
    auto_log_stacks: true
    release: '%env(APP_VERSION)%'

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM