如何防止哨兵捕获某些未捕获的异常和记录消息的事件?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何防止哨兵捕获某些未捕获的异常和记录消息的事件?相关的知识,希望对你有一定的参考价值。

根据Sentry的文档[1][2]推荐的新的统一python sdk(sentry_sdk),我使用我的Django应用程序配置它来捕获所有异常或“错误”级别日志的事件:

import sentry_sdk
import logging
from sentry_sdk.integrations.django import DjangoIntegration
from sentry_sdk.integrations.logging import LoggingIntegration

sentry_logging = LoggingIntegration(
    level=logging.DEBUG,
    event_level=logging.ERROR
)
sentry_sdk.init(
    dsn="{{sentry_dsn}}",
    integrations=[DjangoIntegration(), sentry_logging]
)

但是,由于这直接挂钩到python的日志记录模块和内部异常处理,这意味着任何使用这个Django环境的东西都会将事件传递给哨兵。有些任务(例如交互式manage.py命令,或在REPL中工作)需要Django环境,但我不希望在Sentry中创建事件。

有没有办法向哨兵表明我希望它不能捕获异常或logging调用当前任务的事件?还是一种在全局配置后临时禁用它的方法?

答案

您可以再次运行sentry_sdk.init()(特别是没有DSN)来禁用SDK。

另一答案

也许有更好的方法,但在任何文件中,您都可以导入日志记录并禁用它,如下所示:logging.disable(logging.CRITICAL)。这将禁用在参数或低于参数的级别的日志记录(因为CRITICAL是最高的,它将禁用所有日志记录)。

以上是关于如何防止哨兵捕获某些未捕获的异常和记录消息的事件?的主要内容,如果未能解决你的问题,请参考以下文章

你如何实现重试捕获?

如何防止 jQuery tablesorter 中的“未捕获的异常:语法错误,无法识别的表达式”?

捕获块未捕获异常

如何记录“捕获的”异常?

如何在 Promise 的回调中捕获未捕获的异常

在 C#.NET 中捕获所有未处理异常的简单方法