在多模块Python环境中,文档建议在第一个Python项目的入口点运行以下代码片段来定义项目范围的日志记录。
# ABC.py
import logging
logging.basicConfig(filename='master.log', level=logging.INFO)
logging.info('Start Logging.')
如果某个其他文件是项目的另一个潜在的第一个进入点,我是否也将相同的代码段添加到该文件的顶部?我想要实现的是在单个中心位置指定日志记录,无论哪个文件是第一个入口点。
答案 0 :(得分:2)
您可以创建专用的python脚本文件,仅用于设置日志记录。基本上,该文件将包含您的ABC.py
文件现在包含的内容。
然后只需在每个可能的"入口点"的脚本中导入此文件。即使文件被导入两次,文件中的代码也只运行一次。
答案 1 :(得分:1)
常用方法是使用模块级记录器。
在“主要”配置日志记录中:
import logging
logging.basicConfig(filename='master.log', level=logging.INFO)
main()
在每个模块中使用模块级记录器。以这种方式创建的每个日志都将使用通用配置:
import logging
# my.module.name is arbitrary string and logger identifier, usually it's each module name
logger = logging.getLogger("my.module.name")
logger.info("info msg")