Over a million developers have joined DZone.
{{announcement.body}}
{{announcement.title}}

Console Logging to STDOUT in Django

DZone's Guide to

Console Logging to STDOUT in Django

· Web Dev Zone ·
Free Resource

Learn how error monitoring with Sentry closes the gap between the product team and your customers. With Sentry, you can focus on what you do best: building and scaling software that makes your users’ lives better.

Problem

By default in Python (and Django), the documented console handler emits to STDERR, but you want it to use STDOUT instead. This is often desired for management commands that run as cronjobs.

 

Solution

For Python 2.6, use the following LOGGING config in your settings to specify a different output stream:

import sys
LOGGING = {
    'handlers': {
        'console':{
            'level':'INFO',
            'class':'logging.StreamHandler',
            'strm': sys.stdout
        },
        ...
    }
}


For Python 2.7+, the keyword argument to the constructor of logging.StreamHandler is stream rather than strm. Ensure you use the right version.

Discussion

Django's logging docs detail the following logging configuration for a console handler:

LOGGING = {
    ...
    'handlers': {
        'console':{
            'level':'DEBUG',
            'class':'logging.StreamHandler',
            'formatter': 'simple'
        },
    },
    ...
}


...however, the default output stream for logging.StreamHandler is STDERR. The extra keyword argument in the solution alter this behaviour to use STDOUT.

Logging to STDERR means that any output from cron jobs is emailed to root. A more desirable behaviour is for only genuine errors to trigger emails, while normal output can be logged to file. Hence, a sensible cronjob file would look something like:

SHELL=/bin/bash
MAILTO=alerts.someproject@yourcompany.co.uk

*/10 * * * * app source /venv/bin/activate && /app/manage.py do_something > /dev/null


Source: http://codeinthehole.com/writing/console-logging-to-stdout-in-django/

What’s the best way to boost the efficiency of your product team and ship with confidence? Check out this ebook to learn how Sentry's real-time error monitoring helps developers stay in their workflow to fix bugs before the user even knows there’s a problem.

Topics:

Opinions expressed by DZone contributors are their own.

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}