Help me understand this logging config
Peter Otten
__peter__ at web.de
Tue Aug 30 05:24:44 EDT 2011
Roy Smith wrote:
> I'm using django 1.3 and python 2.6.
Isn't dictConfig() new in 2.7? It looks like that is what you are using...
> My logging config is:
>
>
> LOGGING = {
> 'version': 1,
> 'disable_existing_loggers': False,
> 'formatters': {
> 'verbose': {
> 'format': '%(asctime)s: %(name)s %(levelname)s %
> (funcName)s %(message)s'
> }
> },
> 'handlers': {
> 'mail_admins': {
> 'level': 'ERROR',
> 'class': 'django.utils.log.AdminEmailHandler'
> },
> 'console': {
> 'level': 'DEBUG',
> 'class': 'logging.StreamHandler',
> 'formatter': 'verbose',
> },
> },
> 'loggers': {
> 'django.request': {'handlers': ['mail_admins'],
> 'level': 'ERROR',
> 'propagate': True,
> },
> 'djfront': {'handlers': ['console'],
> 'propagate': True,
> },
> 'djfront.view': {'level': 'INFO'},
> 'djfront.auth': {'level': 'INFO'},
> 'djfront.auth.user': {'level': 'INFO'},
> 'djfront.api': {'level': 'WARN'},
> }
> }
>
> In my code, I do:
>
> logger = logging.getLogger('djfront.auth.facebook')
>
> Since I haven't configured a 'djfront.auth.facebook' logger, it should
> inherit the 'djfront.auth' config, which means the logging level
> should be set to INFO. But, when I do:
>
> logger.debug('redirecting to "%s"' % url)
>
> it emits a message:
>
> 2011-08-29 13:31:03,321: djfront.auth.facebook DEBUG oauth_init
> redirecting to [...]
>
> I'm confused. Why is the debug level message not getting filtered
> out?
I tried your setup with the django-specific handler replaced by another
StreamHandler
$ cat tmp_logging.py
import logging
import logging.config
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'formatters': {
'verbose': {
'format': '%(asctime)s: %(name)s %(levelname)s %(funcName)s
%(message)s'
}
},
'handlers': {
'mail_admins': {
'level': 'ERROR',
'class': 'logging.StreamHandler'
#'django.utils.log.AdminEmailHandler'
},
'console': {
'level': 'DEBUG',
'class': 'logging.StreamHandler',
'formatter': 'verbose',
},
},
'loggers': {
'django.request': {'handlers': ['mail_admins'],
'level': 'ERROR',
'propagate': True,
},
'djfront': {'handlers': ['console'],
'propagate': True,
},
'djfront.view': {'level': 'INFO'},
'djfront.auth': {'level': 'INFO'},
'djfront.auth.user': {'level': 'INFO'},
'djfront.api': {'level': 'WARN'},
}
}
logging.config.dictConfig(LOGGING)
logger = logging.getLogger('djfront.auth.facebook')
logger.info("info-test")
logger.debug("debug-test")
and got what
$ python2.7 tmp_logging.py
2011-08-30 11:18:33,160: djfront.auth.facebook INFO <module> info-test
$
which seems to be what you expected. So I'm confused, too...
More information about the Python-list
mailing list