首页 > 解决方案 > 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')的循环外 - 它工作得很好。

我错过了什么?

标签: djangologgingsentry

解决方案


推荐阅读