如何在Python日志记录中的GMT / UTC上设置时间戳?

问题描述 投票:35回答:5

是否可以以及如何将日志记录时区设置为GMT?

(即%(asctime)s参数的格式)

python logging timezone utc
5个回答
59
投票
logging.Formatter.converter = time.gmtime

(记录在logging.Formatter.formatTime的文档字符串中]


6
投票

仅在Python 2.5中设置logging.Formatter.formatTime对我无效。

所以我创建了一个带有它的子类,并用它代替了logging.Formatter:

logging.Formatter.converter = time.gmtime

1
投票

这里是代码示例:

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

输出:

import logging, logging.handlers
import time

logit = logging.getLogger('logit')
handler = logging.handlers.RotatingFileHandler("file.log", maxBytes=20000, backupCount=5)
handler.setLevel(logging.INFO)
formatter = logging.Formatter('%(asctime)s %(levelname)8s: %(message)s')
handler.setFormatter(formatter)
logging.Formatter.converter = time.gmtime
logit.addHandler(handler)

logit.info("test log message")

1
投票

来自python 3 docs:

2019-11-14 16:34:22,967     INFO: test log message

import time class UTCFormatter(logging.Formatter): converter = time.gmtime


-2
投票

我在这两个答案上都遇到了问题。所以我只是更改了整个脚本的全局时区:

https://docs.python.org/3/howto/logging-cookbook.html#formatting-times-using-utc-gmt-via-configuration
© www.soinside.com 2019 - 2024. All rights reserved.