Python - 如何禁用从父目录导入的模块的日志记录?

Python - How to disable logging from a module imported from the parent directory?

我有这样的文件结构:

util/
└── utilA.py
src/
└── sublevel
    └── moduleB.py

moduleB 中,我使用 from util.utilA import * 从实用程序导入函数。

moduleB 中,我想在实用程序中禁用 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.

不起作用

有人可以帮忙吗?谢谢!

日志记录基于您在获取记录器时使用的名称,而不是执行日志记录的模块的名称。特别是,logging.info() 使用根记录器。如果要调整给定模块的日志记录,请确保它没有使用根记录器并使用其 getLogger("somename") 记录器名称。