3

我知道我可以设置logging.Formatter().converter = time.gmtime。但是我怎么能在 YAML 中做到这一点logging.config.dictConfig呢?

这是我所做的:

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]

但它仍然以当地时间登录。

4

1 回答 1

7

logging.config模块支持键format,datefmtclass; 您的converter密钥被完全忽略。

class关键确实允许您指定自定义格式化程序,因此您最好的选择是子类并让该logging.Formatter()子类设置转换器:

from logging import Formatter
import time

class GMTFormatter(Formatter):
    converter = time.gmtime

然后在您的 YAML 中引用该类:

formatters:
  simple:
    format: '%(asctime)s - %(name)s - %(levelname)s - %(message)s'
    class: ext://your.module.GMTFormatter
于 2013-10-13T08:33:26.433 回答