如何在更改TIME_ZONE设置时保持日志中的UTC时间?

6 投票
1 回答
4489 浏览
提问于 2025-04-28 05:41

我在我的django项目的settings.py文件里设置了时区:

TIME_ZONE = 'US/Eastern'

现在我的日志里显示的是美国东部时间。

我想在我的日志里保持使用UTC时间,这可能吗?

暂无标签

1 个回答

15

Django使用的是Python自带的日志功能,所以这里没有特别针对Django的内容。

根据日志文档,设置logging.Formatter.converter = time.gmtime可以让所有的日志输出为UTC时间。

另外,你也可以自己创建一个Formatter类来使用UTC时间:

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

然后在字典配置中使用()键来进行配置(详细说明可以在这里找到):

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

撰写回答