如何禁用其他模块的记录器?

 飞翔的10号 发布于 2022-12-04 17:24

我在我的项目中使用了几个模块,但是,模块从记录器输出了大量日志,这很烦人.所以我通过以下方式关闭日志:

boto_log = logging.getLogger("boto")
boto_log.setLevel(logging.CRITICAL)
es_log = logging.getLogger("elasticsearch")
es_log.setLevel(logging.CRITICAL)
urllib3_log = logging.getLogger("urllib3")
urllib3_log.setLevel(logging.CRITICAL)

虽然这有效,但代码看起来很冗长.有没有更好,更简单的方法可以做到这一点?

2 个回答
  • 您可以使用logging.config.dictConfig或禁用现有的记录器logging.config.fileConfig

    import logging.config
    logging.config.dictConfig({
        'version': 1,
        # Other configs ...
        'disable_existing_loggers': True
    })
    

    您还可以遍历现有记录器并手动禁用。

    for name, logger in logging.root.manager.loggerDict.iteritems():
        logger.disabled=True
    

    2022-12-11 02:06 回答
  • 也许你可以重构它以削减一些样板:

    for _ in ("boto", "elasticsearch", "urllib3"):
        logging.getLogger(_).setLevel(logging.CRITICAL)
    

    2022-12-11 02:57 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有