Sentry.io 动态忽略记录器

Sentry.io ignore logger dynamically

我希望每当我决定忽略某个记录器发送到哨兵时动态地将记录器添加到文件中,我已经阅读了文档和这个答案 我相信我在我已将文字字符串放入 ignore_logger 函数中。

当我尝试下面的代码时,它并没有忽略记录器,有没有更好的方法来实现这个?

with suppress(FileNotFoundError):
    with open(os.path.join(SITE_ROOT, '..', 'sentry_ignore_logger.txt')) as f:
        for log_line in f:
            ignore_logger(log_line)

我在循环中有一个打印语句来检查它是否正在读取文件并按需要打印,所以问题不是文件不正确。 文件内容为:

django.security.DisallowedHost

我正在使用 Djano,我已经把它放在我的 settings.py 中 sentry_sdk.init 之后(我之前有它,但是也没有用)

谢谢

好的,我改变了我的策略,我没有读取对我不起作用的平面文件,而是将文件更改为 json 结构并将字符串加载为 json 对象并忽略字典中加载到内存中的内容。

with suppress(FileNotFoundError):
    with open(os.path.join(SITE_ROOT, '..', 'sentry_ignore_logger.json')) as f:
        ignore_logger_dict = json.loads(f.read())
        for logger_name in ignore_logger_dict.get('loggers'):
            ignore_logger(logger_name)

文件内容为:

{
    'loggers':
        [
            'django.security.DisallowedHost',
            'proj.module.submodule'
        ]
}

这似乎对我有用,感觉更完整一些

现在我只需要向该数组添加一个新条目并重新启动 apache 或应用程序服务器,新记录器将被忽略

希望对您有所帮助