我希望当我决定忽略某个记录器时,动态地将记录器添加到文件中,我已经阅读了文档和这个答案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)
我在循环中使用了一条print语句来检查它是否正在读取文件,并根据需要进行打印,因此问题不是错误的文件。该文件的内容为:
django.security.DisallowedHost
我正在使用Djano,并且我在sentry_sdk.init之后把它放到了我的settings.py中(我在它之前有过它,但是它也不起作用)
谢谢
发布于 2020-02-28 05:11:42
好了,我改变了我的策略,不是读取一个对我不起作用的平面文件,而是将文件更改为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或应用程序服务器,新的记录器就会被忽略
希望这能有所帮助
https://stackoverflow.com/questions/58406159
复制相似问题