Closed
Description
When I I override LOGGING in my Django settings.py, gunicorn swallows exceptions (runserver displays them). If I revert to Django's default LOGGING config, everything works as expected. Here's my LOGGING setup:
LOGGING_CONFIG = None
LOGGING = {
'version': 1,
'formatters': {
'long': {
'format': "%(asctime)s %(levelname)-8s %(name)s %(message)s",
},
},
'handlers': {
'stderr': {
'class': 'logging.StreamHandler',
'formatter': 'long',
'level': 'DEBUG',
'stream': sys.stderr,
},
},
'loggers': {
'': {
'handlers': ['stderr'],
'level': env('LOG_LEVEL', 'INFO'),
},
}
}
logging.config.dictConfig(LOGGING)
Is gunicorn hooking into logging in a way that's incompatible with this? Even if that's the case, exceptions are being swallowed (never displayed) by gunicorn, not logging messages.
Here's my gunicorn.conf.py for reference:
bind = "%s:%s" % (env('GUNICORN_IP', '0.0.0.0'), env('GUNICORN_PORT', 8000))
forwarded_allow_ips = '*'
reload = env('GUNICORN_CODE_RELOAD', False)
access_log = '-'
error_log = '-'
Activity
pikeas commentedon Jun 18, 2015
Solved. The LOGGING dictionary needs
disable_existing_loggers: False
. This way gunicorn's logging handlers won't be disabled (default when configuring LOGGING).May be worth a mention in gunicorn's docs?
tilgovi commentedon Jun 18, 2015
Absolutely. Let us know where you think it should go, please! Happy to just have you say so or open a PR that closes this issue and we'll merge it. Thanks!
pikeas commentedon Jun 18, 2015
@tilgovi Hm...that's a bit tricky. Based on the current organization of the docs, Settings/Logging doesn't make much sense, as Settings only describes specific options and their usage.
How about adding a new section, Deploying/Django Configuration to mirror the existing Nginx Configuration section? Either that, or an additional note under Deploying/Logging.
tilgovi commentedon Jun 18, 2015
That sounds okay to me. I would also link to it with a note in the "Django" sub-section of the "Integration" section of "Running Gunicorn" to increase the likelihood that a first-time user discovers it.
benoitc commentedon Jun 22, 2015
I would just put the information in the integration subsection . Deploying is about operations more than configuration. Thoughts?
document LOGGING overriding
4 remaining items