Python logging模块Formatter触发字符串相减TypeError报错
报错触发原因
- 代码的语法识别逻辑存在错位:三个日志占位符字符串之间,被放在引号外部的横杠
-没有被识别为日志格式的分隔文本,反而被Python解释为两个字符串字面量之间的减法运算符。 - Python没有定义字符串类型的减法运算规则,当执行到
'%(name)s' - '%(levelname)s'的计算环节时,就会直接抛出不支持字符串减法的TypeError,根本无法进入logging.Formatter的初始化流程。
修复方案
- 日志格式串中,作为分隔符的横杠属于格式字符串的普通文本内容,需要全部收纳在同一个引号内部,不能放在引号外被识别为算术运算符。
- 调整后的可正常运行代码:
formatter = logging.Formatter('%(name)s-%(levelname)s-%(message)s')
- 调整后日志输出会按照预期将日志器名称、日志级别、日志消息三个字段用横杠分隔,类似输出效果:
root-WARNING-磁盘剩余空间不足,不会再触发类型错误。
内容的提问来源于stack exchange,提问作者mahat_asim
相关产品推荐
相关产品推荐

