Python使用logging模块生成日志文件报错找不到文件是什么原因?
Python logging模块多次调用basicConfig失效的原因
logging.basicConfig() 是用于快速配置根日志记录器的工具方法,它的核心设计规则是:仅在根日志记录器尚未绑定任何日志处理器(Handler)时,调用才会生效,否则会直接静默忽略。
错误代码的执行逻辑如下:
- 第一次调用
logging.basicConfig(level=logging.DEBUG)时,根日志记录器无任何处理器,因此调用生效,默认给根日志器绑定了一个输出到控制台的StreamHandler,并设置日志级别为DEBUG。 - 第二次调用带
filename参数的logging.basicConfig()时,根日志器已经存在StreamHandler,因此这次调用被直接忽略,不会创建my_app.log文件,也不会绑定对应的文件处理器。 - 后续
logging.debug的内容只会输出到控制台,不会写入文件,my_app.log始终未被创建,因此执行open('my_app.log', 'r')时抛出FileNotFoundError。
额外注意事项
- 所有日志基础配置必须合并到第一次
logging.basicConfig()调用中才能生效,不能拆分多次调用 - 如果运行过程中需要动态修改日志配置,不能依赖
basicConfig(),需要手动移除根日志器已有处理器后,再新增对应配置的处理器
内容的提问来源于stack exchange,提问作者MattiH
相关产品推荐
相关产品推荐

