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

时间:2017-11-13 13:50:28

标签: python python-3.x logging python-import

使用漂亮的记录器编写代码

RewriteEngine On
RewriteRule ^(.*)$ http://new-domain.dk/$1 [R=301]

按预期工作。使用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() 日志记录到文件和控制台。

在第二步中,您希望导入 外部模块,该模块也使用日志记录模块进行日志记录

  1. 使用logger.debug("Hello! :)")(或任何其他外部模块)
  2. 进行安装
  3. 使用pip3 install pymisp(或任何其他外部模块)
  4. 导入它
  5. 使用from pymisp import PyMISP(或任何其他...)
  6. 创建对象

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

2 个答案:

答案 0 :(得分:6)

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

import logging    
import pymisp

pymisp.logger.setLevel(logging.INFO)
# code of module goes here

答案 1 :(得分:0)

我的一位同事帮助解决了这个问题:

  1. 获取命名记录器yourLogger = logging.getLogger('your_logger')
  2. 为每个处理程序添加过滤器可防止它们打印/保存除您之外的其他日志

    for handler in logging.root.handlers:
        handler.addFilter(logging.Filter('your_logger'))