Monolog:使用保留的较低级别日志记录向Sentry发送错误

问题描述 投票:1回答:1

目标:

我想将所有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(来自breadcrumbs)重现这个ProcessBuilder,但无论我做什么,我都没有在我的Sentry中获得INFO事件。

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

有什么建议正在发生什么?我如何改进我们的配置以实现我们所需要的但不用我们不想要的事件向我们的Sentry发送垃圾邮件?

php sentry monolog
1个回答
0
投票

解决方案是在BufferHandlerFingersCrossedHandler之间添加WhatFailureGroupHandler

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)%'
© www.soinside.com 2019 - 2024. All rights reserved.