1. 问题现象
在 Python 中我们常用 logging.basicConfig()
来初始化日志。例如:
import logging
log_file = "save/logging/app.log"
logging.basicConfig(
filename=log_file,
level=logging.INFO,
format="%(asctime)s - %(levelname)s - %(message)s",
filemode="w"
)
logging.info("程序启动")
正常情况下,执行后会在 save/logging/
目录下生成 app.log
文件,并写入日志内容。
但在实际开发中,可能会遇到这样的问题:
-
没有报错
-
目录存在
-
调用了
logging.info()
等方法 -
结果就是
.log
文件没有生成
这就让人很困惑:明明代码和之前一样,为什么突然就不写日志了?
2. 原因分析:logging.basicConfig()
的机制
要理解这个现象,需要知道 basicConfig()
的内部机制。
2.1 basicConfig()
只生效一次
-
logging.basicConfig()
的作用是为 root logger 配置默认的 handler 和 formatter。