为什么我的Django 1.3日志记录设置会导致所有消息输出两次?

mps*_*pso 7 django logging

我的Django 1.3日志记录设置会导致所有日志消息输出两次.我已经读过两次或两次以上导入settings.py导致了这个问题,但Django 1.3有新的日志记录功能,我不认为我在任何地方导入settings.py两次.

settings.py配置:

LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'formatters': {
        'simple': {
            'format': '%(levelname)s: %(message)s'
        },
    },
    'handlers': {
        'console': {
            'level': 'DEBUG',
            'class': 'logging.StreamHandler',
            'formatter': 'simple',
        },
    },
    'loggers': {
        'custom': {
            'handlers': ['console'],
            'level': 'DEBUG',
        },
    }
}
Run Code Online (Sandbox Code Playgroud)

码:

import logging
log = logging.getLogger('custom')

log.debug('message1')
log.debug('message2')
Run Code Online (Sandbox Code Playgroud)

输出:

DEBUG: message1
DEBUG:custom:message1
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助.

Ken*_*ane 8

你试过设置propagate = False吗?与disable_existing_loggers = True一起?

LOGGING = {
    'version': 1,
    'disable_existing_loggers': True,
    'formatters': {
        'simple': {
            'format': '%(levelname)s: %(message)s'
        },
    },
    'handlers': {
        'console': {
            'level': 'DEBUG',
            'class': 'logging.StreamHandler',
            'formatter': 'simple',
        },
    },
    'loggers': {
        'custom': {
            'handlers': ['console'],
            'level': 'DEBUG',
            'propagate': False,
        },
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 'propagate':False工作而不改变disable_existing_loggers,谢谢. (3认同)