如何设置导入模块的日志级别?

gie*_*s0r 6 python logging python-import python-3.x

用漂亮的记录器编写代码

import logging

def init_logging():
     logFormatter = logging.Formatter("[%(asctime)s] %(levelname)s::%(module)s::%(funcName)s() %(message)s")
     rootLogger = logging.getLogger()
     LOG_DIR = os.getcwd() + '/' + 'logs'
     if not os.path.exists(LOG_DIR):
          os.makedirs(LOG_DIR)
     fileHandler = logging.FileHandler("{0}/{1}.log".format(LOG_DIR, "g2"))
     fileHandler.setFormatter(logFormatter)
     rootLogger.addHandler(fileHandler)
     rootLogger.setLevel(logging.DEBUG)
     consoleHandler = logging.StreamHandler()
     consoleHandler.setFormatter(logFormatter)
     rootLogger.addHandler(consoleHandler)
     return rootLogger

logger = init_logging()
Run Code Online (Sandbox Code Playgroud)

按预期工作.使用logger.debug("Hello! :)")日志记录到文件和控制台.

在第二步中,您要导入一个外部模块,该模块也使用日志记录模块进行日志记录:

  1. 使用pip3 install pymisp(或任何其他外部模块)安装它
  2. 使用from pymisp import PyMISP(或任何其他外部模块)导入它
  3. 使用self.pymisp = PyMISP(self.ds_model.api_url, self.ds_model.api_key, False, 'json')(或任何其他...)创建它的对象

现在发生的是,从导入的模块输出的每个调试日志都会记录到日志文件和控制台.现在的问题是,如何为导入的模块设置不同的(更高)日志级别.

F.M*_*.F. 6

大多数使用日志记录的第三方模块都实现了一个记录器并将其存储在一个名为logger_log在模块级别的变量中.这意味着您可以提取记录器并根据您的需要进行调整.在你的情况下:

import logging    
import pymisp

pymisp.logger.setLevel(logging.INFO)
# code of module goes here
Run Code Online (Sandbox Code Playgroud)

  • 如果库不存在 `logger` 或 `_log`,另一种方法是:```logging.getLogger("imported_module_name").setLevel(logging.WARNING)``` (2认同)