在root和第三方模块(pypsexec)之间设置不同的日志级别



我有一些代码创建了一个根记录器,它将消息保存在磁盘上。非常标准的。我的代码使用的pypsexec模块往往过于冗长,我希望能够:1-继续创建我自己的日志信息INFO而2-抑制来自pypsexec的小于WARNING

的日志记录我该怎么做呢?

来自pypsexec的文档提到我应该使用这样的东西:

import logging
logger = logging.getLogger("pypsexec")
logger.setLevel(logging.DEBUG)  # set to logging.INFO if you don't want DEBUG logs
ch = logging.StreamHandler()
ch.setLevel(logging.DEBUG)
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - '
'%(message)s')
ch.setFormatter(formatter)
logger.addHandler(ch)

但是,我已经有了一个作为根记录器创建的记录器对象。我不知道如何保持我的根记录器,记录我的调试消息为INFO,同时限制由pypsexec记录的消息是警告和上升?

,

我也试过了:

import logging
from pypsexec.client import log as psexec_logger
psexec_logger.setLevel(logging.WARNING)

但是我仍然得到像这样的pypsexec日志示例:

12/23/2022 03:19:20 PM - INFO     Initialising connection, guid: c7745e58-b06e-4db4-b6de-b11fa0293f13, require_signing: True, server_name: xxxxxx.xxx.xxx, port: 445
12/23/2022 03:19:20 PM - INFO     Initialising session with username: domainuseraccount

我找到了自己问题的答案。问题是,记录的消息实际上不是来自pypsexec,而是来自pypsexec正在使用的包。我必须跟踪代码以确定smbprotocol生成了冗长的消息。

我所要做的就是:logging.getLogger('smbprotocol').setLevel(logging.WARNING)

最新更新