由于某种原因,我的Python记录器不想识别微秒格式。
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")
log_handler.setFormatter(log_format)
logger.addHandler(log_handler)
logger.info("This is test info log")
print(stream.getvalue())
它返回:
2023-01-06 18:52:34.%f UTC - TestLogger - INFO - This is test info log
为什么少了微秒?
- 更新**
我正在运行Python 3.10.4发行商ID:Debian描述:Debian GNU/Linux 11(靶心)发行版:11代号:靶心
1条答案
按热度按时间vngu2lb81#
问题在于
formatTime
方法使用time.strptime
来格式化当前的time.time()
,但是由于struct_time
没有关于milliseconds
和microseconds
的信息,因此格式化程序忽略了%f
。另外,请注意
LogRecord
单独计算毫秒数,并将它们存储在另一个名为msecs
的变量中为了得到你想要的,我们需要一个
Formatter
类的自定义版本,它使用不同于time.localtime
的转换器,并且能够解释微秒:应输出:
x1米11米1x