按照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
调用中的事件?还是在全局配置后暂时禁用它?
答案 0 :(得分:1)
您可以再次运行sentry_sdk.init()
(特别是没有DSN)来禁用SDK。
答案 1 :(得分:0)
也许有更好的方法,但是在任何文件中,您都可以导入日志记录并禁用它,如下所示:logging.disable(logging.CRITICAL)。这将禁用该参数或低于该参数的级别的日志记录(因为CRITICAL是最高级别,它将禁用所有日志记录)。
答案 2 :(得分:0)
根据.NET @ https://getsentry.github.io/sentry-dotnet/api/Sentry.SentrySdk.html#Sentry_SentrySdk_Init_System_String_ sentry_sdk.init()
的文档,“将空字符串解释为已禁用的SDK”。是的,我知道这是一个Python问题,但是它们的API在不同语言之间通常是一致的
答案 3 :(得分:0)
参加聚会很晚,但对于 2021 年 4 月之后参加聚会的任何人,您只需:
import sentry_sdk
sentry_sdk.Hub.current.stop_auto_session_tracking()
调用 stop_auto_session_tracking()
将始终停止哨兵错误,只要您在执行 sentry_sdk.init
之后 (1) (2) 在您的应用程序中发生任何错误之前包含它。
答案 4 :(得分:0)
在没有参数的情况下调用 init 的公认答案对我不起作用。
我必须明确传递一个空的 DSN:
import sentry_sdk
sentry_sdk.init(dsn="")
使用 sentry_sdk
0.19.1 测试:
>>> import sentry_sdk
>>> sentry_sdk.Hub.current.client.dsn
"https://...redacted...@sentry.io/..."
>>> sentry_sdk.init(dsn="")
>>> sentry_sdk.Hub.current.client.dsn
''
在不带参数的情况下调用 init 后,DSN 保持不变。