使用logging模块无法打印numpy数组的技术问题咨询
问题原因及解决办法
为什么logging.info没有输出?
1. 默认日志级别过滤了INFO信息
Python的logging模块默认根日志级别为WARNING,只有级别≥WARNING的日志(如WARNING、ERROR、CRITICAL)才会被输出,INFO级别低于WARNING,因此默认不会显示。
2. 日志调用方式错误
logging.info('matrix', np.eye(4))的写法不符合规范:logging.info的第一个参数是格式化字符串,后续参数是用来填充字符串中占位符(如%s)的变量,而非直接传递多个消息对象。直接传两个参数时,第二个参数会被当作exc_info这类关键字参数处理,不会被当作日志内容输出。
解决步骤
第一步:调整日志级别
在代码开头添加配置,将日志级别设置为INFO:
import logging import numpy as np # 配置日志级别为INFO logging.basicConfig(level=logging.INFO)
第二步:正确调用日志方法
两种可行的写法:
- 将numpy数组转为字符串直接传入:
logging.info(str(np.eye(4)))
- 使用格式化占位符拼接内容:
logging.info('matrix: %s', np.eye(4))
修改后即可正常输出矩阵内容,且默认会带上日志级别、时间等额外信息,功能比print更丰富。
内容的提问来源于stack exchange,提问作者Florian Ludewig
相关产品推荐
相关产品推荐

