You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

生产环境下如何配置Django同时记录INFO与ERROR级别日志?

解决方案

没问题,我来帮你调整这个日志配置,让project级别同时记录INFO和ERROR日志。你只需要修改loggers里project项的日志级别即可,具体调整如下:

修改后的完整LOGGING配置:

LOGGING = {
    'version': 1,
    'disable_existing_loggers': True,
    'root': {
        'level': 'WARNING',
        'handlers': ['console', ],
    },
    'formatters': {
        'verbose': {
            'format': '%(levelname)s %(asctime)s %(module)s '
                      '%(process)d %(thread)d %(message)s'
        },
    },
    'handlers': {
        'console': {
            'level': 'DEBUG',
            'class': 'logging.StreamHandler',
            'formatter': 'verbose'
        },
        'sns': {
            'level': 'ERROR',
            'class': 'project.abc.snshandler.SNSHandler',
            'formatter': 'verbose'
        }
    },
    'loggers': {
        'django.db.backends': {
            'level': 'ERROR',
            'handlers': ['console', ],
            'propagate': False,
        },
        'django.security.DisallowedHost': {
            'level': 'ERROR',
            'handlers': ['console', ],
            'propagate': False,
        },
        'project': {
            'level': 'INFO',  # 这里从ERROR改成INFO
            'handlers': ['console', 'sns'],
            'propagate': False,
        },
    },
}

调整说明:

  • 修改project logger的级别为INFO:这个设置会让project下的所有日志都捕获INFO及以上级别的日志(包括INFO、WARNING、ERROR、CRITICAL)。
  • 现有handler的配置无需改动:
    • console handler的级别是DEBUG,会接收所有高于等于DEBUG的日志,自然包含INFO和ERROR;
    • sns handler保持ERROR级别,只会接收ERROR及以上的日志,这样ERROR日志会同时输出到console和SNS,而INFO日志只会输出到console,完全符合你的需求。

另外,propagate: False的设置确保project的日志不会向上传递到root logger,避免重复输出日志。

内容的提问来源于stack exchange,提问作者Wagh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 07:17:28