Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Gunicorn swallowing exceptions #1051

Closed
pikeas opened this issue Jun 18, 2015 · 5 comments
Closed

Gunicorn swallowing exceptions #1051

pikeas opened this issue Jun 18, 2015 · 5 comments

Comments

@pikeas
Copy link

pikeas commented Jun 18, 2015

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 = '-'
@pikeas
Copy link
Author

pikeas commented 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
Copy link
Collaborator

tilgovi commented 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
Copy link
Author

pikeas commented 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
Copy link
Collaborator

tilgovi commented 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
Copy link
Owner

benoitc commented Jun 22, 2015

I would just put the information in the integration subsection . Deploying is about operations more than configuration. Thoughts?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants