Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to configure Python Logging with YAML to log in UTC?

Tags:

python

logging

I know I can set logging.Formatter().converter = time.gmtime. But how can I do this in YAML and logging.config.dictConfig?

Here is what I did:

version: 1
formatters:
  simple:
    format: '%(asctime)s - %(name)s - %(levelname)s - %(message)s'
    converter: ext://time.gmtime
handlers:
  console:
    class: logging.StreamHandler
    level: DEBUG
    formatter: simple
    stream: ext://sys.stdout
loggers:
  my_app:
    level: DEBUG
    handlers: [console]

But it still logs in local time.

like image 794
rbehzadan Avatar asked Sep 05 '25 02:09

rbehzadan


1 Answers

The logging.config module only supports the keys format, datefmt and class; your converter key is entirely ignored.

The class key does let you specify a custom formatter, so your best option is to subclass logging.Formatter() and have that subclass set the converter:

from logging import Formatter
import time

class GMTFormatter(Formatter):
    converter = time.gmtime

then refer to that class in your YAML:

formatters:
  simple:
    format: '%(asctime)s - %(name)s - %(levelname)s - %(message)s'
    class: ext://your.module.GMTFormatter
like image 143
Martijn Pieters Avatar answered Sep 06 '25 19:09

Martijn Pieters