Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python记录器的后代-好处_Python_Logging - Fatal编程技术网

python记录器的后代-好处

python记录器的后代-好处,python,logging,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,

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

在名为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...
不只是创建一个logger对象,而是让其他模块导入并使用它。例如,在同一项目中:

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对象中获取所需的所有数据:文件名、函数名、路径名、名称等


为什么在我使用getLogger时重复创建子记录器调用getLogger的相同过程?它也可能有一个较小的性能足迹没有

为每个文件创建单独的记录器的原因是,您可以在不更改源代码的情况下自定义记录的内容和未记录的内容

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


出于同样的原因,每个记录器都可以使用不同的日志记录级别,以便生成更多或更少的日志。然后,在某个时刻,当需要模块a的详尽日志数据进行调试时,可以修改配置文件以显示模块a的调试日志级别,而不会将日志文件与应用程序中每个模块的调试信息混在一起。

如果您有两个问题,您应该发布到问题,这样你就可以分别得到答案,这样标题就可以显示你在问什么,这样其他有相同问题的人就可以更容易地找到答案,这样你就可以分别接受每个问题的答案,因此,您的问题可以单独评估和处理…当使用多个记录器时,您有更多的控制权。您可以根据需要禁用记录器,例如,您可以将foo.bar logger的日志级别更改为WARNING,并将foo.baz的日志级别更改为DEBUG。您可以在查看日志时看到哪个模块生成了日志记录。此外,如果您同时有两个问题,您可能应该阅读@zvone my bad,注意到。对我来说,重要的是要解释一下,我已经阅读和搜索了很多关于这方面的内容。不过,你会建议我创建一个新的问题来回答我的第二个问题吗?是的,我会这样做。删除此处的第二个问题,并将其作为新问题发布。