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

时间:2011-07-17 07:20:30

标签: django logging

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

settings.py config:

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',
        },
    }
}

代码:

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

log.debug('message1')
log.debug('message2')

输出:

DEBUG: message1
DEBUG:custom:message1

感谢您的帮助。

3 个答案:

答案 0 :(得分:7)

您是否尝试过设置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,
        },
    }
}

答案 1 :(得分:0)

您可能想尝试'disable_existing_loggers':是吗?

答案 2 :(得分:0)

我遇到了同样的问题。我通过将根日志重定向到文件来修复它,并将日志投影到文件和控制台。

我grep我的代码,并且找不到basicConfig()存在,也尝试将disable_existing_loggers设置为True,它没有帮助,最后通过设置文件记录器解决了问题。我想在某些情况下这可能是设计上的一个问题。

<input type="radio" name="choice-1" id="choice-1" value="1"/>
<label for="choice-1">
    <img src="img/black.jpeg" />
</label>
<input type="radio" name="choice-1" id="choice-2" value="1"/>
<label for="choice-2">
    <img src="img/blue.jpg" />
</label>