Michael
Michael

Reputation: 8758

How to keep UTC time in logging while changing the TIME_ZONE settings?

I set the time zone in the settings.py file of my django project:

TIME_ZONE = 'US/Eastern'

and now my logs contain US/Eastern times.

I would like to keep an UTC time in my logs. Is that possible?

Upvotes: 6

Views: 4815

Answers (1)

Kevin Christopher Henry
Kevin Christopher Henry

Reputation: 48952

Django uses Python's logging facilities, so there shouldn't be anything Django-specific here.

According to the logging documentation, setting logging.Formatter.converter = time.gmtime should make all logs output in UTC.

Alternatively, you can make your own Formatter class to use UTC:

class UtcFormatter(logging.Formatter): 
    converter = time.gmtime

And then configure it using the () key (documented here) in the dictconfig:

LOGGING = {
    'formatters': {
        'utc': { 
            '()': 'my.package.UtcFormatter',
            'format': '...',
            'datefmt': '...',
        }
    }
}

Upvotes: 15

Related Questions