我有一个像这样的文件结构:
util/
└── utilA.py
src/
└── sublevel
└── moduleB.py
在moduleB
中,我使用from util.utilA import *
从util中导入函数。
在moduleB
内,我想禁用util中的logging.info()
,但是以下两行不起作用,如果我运行moduleB
,我仍然看到生成的日志记录来自utilA
中的功能:
logging.getLogger('util.utilA').propagate = False
logging.getLogger('util.utilA').setLevel(logging.ERROR)
我也尝试了logging.getLogger('util')
和logging.getLogger('utilA')
,但这些都不起作用。
让我困惑的一件事是,我对另一个模块pdfminer使用了相同的两行(logging.getLogger('pdfminer')...
),并且成功禁用了该模块的日志记录。不适用于我的本地utilA
。
有人可以帮忙吗?谢谢!
答案 0 :(得分:1)
日志记录基于获取记录器时使用的名称,而不是执行记录的模块的名称。特别是logging.info()
使用root记录器。如果要调整给定模块的日志记录,请确保它未使用root记录器,并使用其getLogger("somename")
记录器名称。