代码之家  ›  专栏  ›  技术社区  ›  rgamber

从导入模块处理记录器

  •  0
  • rgamber  · 技术社区  · 6 年前

    我正在开发一个包,为此我编写了自己的自定义记录器,并在其中添加了一个 FileHandler 和一个 StreamHandler . 这可以很好地工作,流日志和文件日志符合要求。到现在为止,一直都还不错。

    但是现在我导入了一个特定的外部库,一旦我这样做,我所有的日志语句就开始打印两次。查看该库的源代码,我看到它在其中一个文件中所做的工作

    logging.basicConfig(level=log_level, format=format_string)
    

    我无法访问这个导入库的源代码,它是外部的。什么是防止这种情况发生的正确方法?

    logging.basicConfig(...) 如果我正在编写一个可以由其他库导入的模块?

    0 回复  |  直到 6 年前
        1
  •  1
  •   Scott P.    6 年前

    我同意 logging.basicConfig() 不在模块内时调用模块

    if __name__ == '__main__'

    也就是说,你可以打电话 logging.basicConfig(..., force=True) logging.config.dictConfig() )输入代码并设置设置。您的通话将覆盖现有的设置。

    logging.getLogger("offending.modules.logger.name").setLevel("CRITICAL")