我有一个带有哨兵集成的 django 应用程序。
我有一个管理命令,我知道它会出现很多异常,主要是由于网络。我想在控制台中查看命令的进度,为此我使用了 tqdm,我不想在控制台中看到错误,但我确实想在 sentry 中看到错误。
我在 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')
时 - 它工作得很好。
我错过了什么?