You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python Logger中微秒格式无法正常生效问题求助

Python logging模块微秒格式不生效的解决办法

你遇到的问题是因为Python logging模块的Formatter默认不支持在%(asctime)s里解析%f格式符,它内部默认只处理到秒级,所以直接写%f会原样输出。

解决办法很简单,只需要给Formatter对象设置default_msec_format属性,让它支持微秒的格式化:

修改后的完整代码:

import logging, io

stream = io.StringIO()
logger = logging.getLogger("TestLogger")
logger.setLevel(logging.INFO)
logger.propagate = False
log_handler = logging.StreamHandler(stream)
log_format = logging.Formatter(
    '%(asctime)s - %(name)s - %(levelname)s - %(message)s',
    "%Y-%m-%d %H:%M:%S.%f %Z"
)
# 关键设置:让asctime解析微秒
log_format.default_msec_format = '%s.%06d'
log_handler.setFormatter(log_format)
logger.addHandler(log_handler)

logger.info("This is test info log")
print(stream.getvalue())

说明

  • default_msec_format默认值是%s,%03d,仅处理三位毫秒数。改成%s.%06d后,会把六位微秒值填充到%f的位置。
  • 如果时区标识%Z无法正确显示,可以考虑去掉该部分,或者确保系统时区配置正确。

运行修改后的代码,输出会变成类似:

2023-01-06 18:52:34.123456 UTC - TestLogger - INFO - This is test info log

内容的提问来源于stack exchange,提问作者user1700890

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 02:50:53