Python日志单条目能否添加两种格式的同时间戳(无需自定义格式化器/过滤器)
答案:不行,原生Python logging模块不支持这种操作
在不自定义格式化器(Formatter)或过滤器的前提下,Python标准库的logging模块没办法直接在单条日志里输出两种不同格式的同一时间戳,原因很简单:
- 标准
Formatter类的datefmt参数是全局生效的,它会统一控制%asctime占位符的输出格式。你没办法在同一个format字符串里给%asctime指定两种不同的格式规则。 - 所有基于标准Formatter的日志输出,时间戳的格式都是由初始化Formatter时传入的
datefmt决定的,不存在在format字符串里动态切换格式的原生语法。
如果想要实现类似需求,又不想写自定义Formatter/过滤器,只能退而求其次,在业务代码里手动生成第二种格式的时间戳,把它作为日志消息的一部分传入,比如:
import logging from datetime import datetime logging.basicConfig( format='%(asctime)s - %(message)s - %(levelname)s', datefmt='%Y-%m-%d %H:%M:%S' ) # 手动生成第二种格式的时间戳 custom_ts = datetime.now().strftime('%Y%m%d%H%M%S') logging.info(f"业务内容 {custom_ts}")
但这种方式本质上是把额外的时间戳作为日志消息的一部分,而非通过Formatter的字段来控制,和你原本想要的“在日志格式中嵌入两个不相邻的时间戳字段”的场景有区别。
内容的提问来源于stack exchange,提问作者robross0606
相关产品推荐
相关产品推荐

