django - Django sentry 仅记录到哨兵,而不是控制台
问题描述
我有一个带有哨兵集成的 django 应用程序。
我有一个管理命令,我知道它会出现很多异常,主要是由于网络。我想在控制台中查看命令的进度,为此我使用 tqdm,我不想在控制台中看到错误,但我确实想在哨兵中看到错误。
我已经像这样设置了我的哨兵settings.py
:
LOGGING = {
'version': 1,
'disable_existing_loggers': False, # I did try both True and False
'handlers': {
'sentry': {
'level': 'ERROR',
'class': 'sentry_sdk.integrations.logging.EventHandler',
},
},
'loggers': {
'devices.management.commands.send_to_device': {
'handlers': ['sentry'],
'level': 'ERROR',
},
}
}
这是命令的代码:
failed = []
for obj in tqdm(lst):
try:
send(obj)
except Exception as e:
# log to sentry only (according to logging config in settings.py)
logger.error(e, exc_info=True, extra={'obj': obj})
failed.append(obj)
logging.getLogger('stats').warning(f'{len(failed)} failed')
但是,我没有在哨兵中记录异常……甚至更奇怪的是,当我期待数百个时,我记录了其中的几个。
当我尝试一个简单logger.error('test')
的循环外 - 它工作得很好。
我错过了什么?
解决方案
推荐阅读
- c - 逐行扫描数字并在某个点停止 (C)
- javascript - 如何从带有分隔符#的字符串中获取多个子字符串
- amazon-web-services - 如何更改您不是所有者的 Amazon S3 对象的权限
- arrays - 如何确定数组在c中的维数
- r - 在 R 中的 ggscatter 上更改 pearson 传奇
- python - 在 Python 中返回上一个浏览器窗口
- java - 对如何将反应式范式与 DDD 一起使用的疑问 - 域存储库
- php - 所有行jquery中的性能问题循环
- python - Keras.applications 源代码的更改导致 localhost 中缺少变量时出错
- ansible - 通过 one_vm 配置多个后如何在 OpenNebula 中的虚拟机上继续执行 ansible 脚本