我在代码中使用的一些模块(paramiko)已经配置了日志记录,这会产生大量的日志消息。
如何仅从我的代码打印日志消息,而不是从导入的模块打印日志消息。
使用logging.basicConfig()
全局配置日志记录答案 0 :(得分:0)
请勿使用basicConfig
。确保您的模块记录到他们自己的记录器而不是根记录器。
log = logging.getLogger('my_package')
log.debug('a message')
确保仅在单个模块中设置日志记录处理程序,通常在您调用的运行该工具的脚本中完成。获取包中使用的相同记录器,然后将处理程序添加到 该记录器。
log = logging.getLogger('my_package')
handler = logging.StreamHandler()
handler.setLevel(logging.DEBUG)
log.addHandler(handler)
您现在应该只能看到来自my_package
记录器以及该记录器的任何子项的记录消息。
一个常见的惯例是将它放在您将要使用日志记录的每个模块的顶部
log = logging.getLogger(__name__)
这样,用于每个模块的记录器将只是该模块的导入路径。因此,如果您通过执行import package.module
导入该模块,则记录器的名称也将为"package.module"
。这样,您可以轻松指定要记录的特定记录器。
答案 1 :(得分:0)
如果您check out the logging module source或the docs,您会看到basicConfig
配置根记录器,这是您通过
logging.getLogger('')
如果您仔细阅读了日志记录文档,您会看到basicConfig
正是 - 基本配置。你真的应该使用这样的东西:
logger = logging.getLogger(__name__)
然后,您可以在记录器中添加各种处理程序:
logger.setLevel(logging.DEBUG)
h = logging.StreamHandler()
h.setLevel(logging.DEBUG)
logger.addHandler(h)
现在,您的记录器只会显示来自您的程序的日志消息。