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")
记录器名称。
我有这样的文件结构:
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")
记录器名称。