[Solved]-Why does my Django 1.3 logging setup cause all messages to be output twice?

13👍

Have you tried setting propagate = False? Along with 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,
        },
    }
}

0👍

You might want to try ‘disable_existing_loggers’: True?

0👍

I’ve been suffered by the same issue. And I fixed it by redirecting the root logs to a file, and project logs to both the file and the console.

I grep my code, and could not find anywhere basicConfig() exists, also tried to set disable_existing_loggers to True, It doesn’t help, finally solved the problem by set a file logger. I guess it maybe a problem by design in some cases.

LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'formatters': {
    'simple': {
        # exact format is not important, this is the minimum information
        'format': '%(asctime)s %(name)-12s %(lineno)d %(levelname)-8s %(message)s',
    },
},
'handlers': {
    'console': {
        #'level': 'INFO',
        'class': 'logging.StreamHandler',
        'formatter': 'simple',
    },
    # Add Handler for mail_admins for `warning` and above
    'mail_admins': {
        'level': 'ERROR',
        'class': 'django.utils.log.AdminEmailHandler',
    },
    'file': {
        #'level': 'INFO',
        'class': 'logging.FileHandler',
        'formatter': 'simple',
        'filename': os.path.join(os.path.dirname(PROJECT_ROOT), 'crawler.admin.log'),
    },

},

'loggers': {
    # root logger
    '': {
        'level': 'INFO',
        'handlers': ['file', 'mail_admins'],
    },
    'scrapy': {
        'level': 'WARNING',
        'handlers': ['console', 'mail_admins'],
        'propagate': False,
    },
    'crawleradmin': {
        'level': 'INFO',
        'handlers': ['console', 'file', 'mail_admins'],
        # required to avoid double logging with root logger
        'propagate': False,
    },
},
}

Leave a comment