Django哨兵只记录哨兵,而不是控制台

时间:2021-03-15 19:34:30

标签: django logging sentry

我有一个带有哨兵集成的 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') 时 - 它工作得很好。

我错过了什么?

0 个答案:

没有答案