登录具有多个入口点的Python项目

时间:2016-01-29 15:24:07

标签: python logging

在多模块Python环境中,文档建议在第一个Python项目的入口点运行以下代码片段来定义项目范围的日志记录。

# ABC.py
import logging

logging.basicConfig(filename='master.log', level=logging.INFO)
logging.info('Start Logging.')

如果某个其他文件是项目的另一个潜在的第一个进入点,我是否也将相同的代码段添加到该文件的顶部?我想要实现的是在单个中心位置指定日志记录,无论哪个文件是第一个入口点。

2 个答案:

答案 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")