我正在开发一个包,并在开发过程中使用logging模块来记录调试/信息日志。有没有一种好的方法只为我的包启用日志记录,而不是为根目录下的所有内容都启用日志记录?
比如说,我有一个名为my_package的包:
和一个使用该包的主要函数:
比如说,我有一个名为my_package的包:
# Some package from elsewhere that I need but don't want to see logging from
import other_package
import logging
from logging import NullHandler
logger = logging.getLogger(__name__)
logger.addHandler(NullHandler())
def my_func():
logger.debug("a message")
和一个使用该包的主要函数:
import my_package
# Some package from elsewhere that I need but don't want to see logging from
import another_package
import logging
logging.basicConfig(level=logging.DEBUG)
my_package.my_func()
这个设置将让我看到my_func()
对logger.debug()
的调用,但它也会显示来自other_package和another_package的任何logger.debug()
调用,而这不是我想要看到的。我该如何设置只能看到来自my_package的日志记录?
我可以使用一些笨拙的方法,比如硬编码禁用每个其他包的logging.propagate
或类似的方式,但那感觉应该有更好的方法。