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

Python logging模块正常输出固定文本但无法写入变量值问题

问题原因
  • logging模块的日志方法参数规则和print()不同:print()支持传入多个参数,会自动把所有参数转成字符串后拼接输出;但logging.info()等日志方法的第一个入参只能是格式化字符串,后续入参是用来填充格式化字符串中占位符的参数,如果格式化字符串没有对应占位符,后续传入的变量内容不会被写入日志。
  • 你写的logging.info('y = ', y)中,y会被识别为多余的占位符填充参数,当前面的字符串没有占位符时,这部分内容直接被忽略,所以日志里看不到y的值,类中的self.变量无法写入也是相同的原因。
解决方法

以下几种写法都可以正常输出变量内容,类中的self.xxx变量也可以用相同规则处理:

  1. 使用logging原生占位符(官方推荐,性能最优)
logging.info('y = %s', y)
# 打印self变量示例
logging.info('self.name = %s', self.name)

这种写法如果当前日志级别未开启,不会执行字符串拼接操作,性能比预先拼接字符串更好。

  1. 使用f-string拼接(Python3.6+支持,写法最直观)
logging.info(f'y = {y}')
# 打印self变量示例
logging.info(f'self.name = {self.name}')
  1. 使用str.format拼接
logging.info('y = {}'.format(y))
# 打印self变量示例
logging.info('self.name = {}'.format(self.name))

修改完成后重新运行代码,日志文件就会出现INFO:root:y = 100的对应变量输出内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 17:39:03