Sentry.io动态忽略记录器

时间:2019-10-16 05:15:28

标签: python django sentry

我希望每当我决定忽略某个记录器从发送到哨兵时就将其动态添加到文件中,我已经阅读了文档和答案How to ignore a logger in the Sentry Python SDK,并且我相信当我将文字字符串放入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,并将其放在sentry_sdk.init之后的我的settings.py中(我之前有它,但是那也不起作用)

谢谢

1 个答案:

答案 0 :(得分:0)

好吧,我改变了这一点,而不是读取一个对我不起作用的平面文件,而是将文件更改为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或应用服务器,新记录器就会被忽略

希望有帮助