python logger的后代-好处

时间:2018-09-06 08:43:23

标签: python logging

我很难理解在每个模块中从根记录器创建后代记录器的好处。例如:

在名为“ 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)?它可能也有较小的性能足迹吗?

1 个答案:

答案 0 :(得分:1)

为每个文件创建单独的记录器的原因是,以便您以后可以自定义记录的内容和不记录的内容,而无需更改源代码。

通常通过外部文件配置日志记录,安装后,即使不是软件开发人员的用户也可以修改该文件。

出于相同的原因,每个记录器可以使用不同的记录级别,以便允许生成更多或更少的日志。然后在某个时候,例如出于调试目的,需要使用模块a的详尽日志数据,可以修改配置文件以显示模块DEBUG的{​​{1}}日志级别,而不会弄乱每个模块的调试信息在应用程序中。