我很难理解在每个模块中从根记录器创建后代记录器的好处。例如:
在名为“ foo”的项目中,模块名称为“ bar”:
import logging
logger = logging.getLogger(__name__)
# other pieces of code, that all of them use log...
同一个项目,但在模块“ baz”中
import logging
logger = logging.getLogger(__name__)
# other pieces of code, that all of them use log...
创建一个记录器对象,而不是仅仅创建一个记录器对象,并使其他模块导入并使用它。例如在同一项目中:
from foo.logs import logger
# other pieces of code, that all of them use log...
和foo / logs.py将包含以下内容:
import logging
logger = logging.getLoger('foo')
# some init logic of the logger...
我可以从创建的LogRecord对象获取所需的所有数据:文件名,funcName,路径名,名称等...
为什么当我使用后代记录器时,重复相同的创建后代记录器的过程(称为getLogger)?它可能也有较小的性能足迹吗?
答案 0 :(得分:1)
为每个文件创建单独的记录器的原因是,以便您以后可以自定义记录的内容和不记录的内容,而无需更改源代码。
通常通过外部文件配置日志记录,安装后,即使不是软件开发人员的用户也可以修改该文件。
出于相同的原因,每个记录器可以使用不同的记录级别,以便允许生成更多或更少的日志。然后在某个时候,例如出于调试目的,需要使用模块a
的详尽日志数据,可以修改配置文件以显示模块DEBUG
的{{1}}日志级别,而不会弄乱每个模块的调试信息在应用程序中。