我在我的项目中使用了几个模块,但是这些模块从日志记录器输出了大量的日志,这很烦人。所以我通过以下方式关闭日志:
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)
虽然这样做是可行的,但代码看起来很冗长。有没有更好、更简单的方法可以做到这一点?
4条答案
按热度按时间tktrz96b1#
您可以使用
logging.config.dictConfig
或logging.config.fileConfig
禁用现有记录器。您也可以循环现有的记录器并手动禁用。
i1icjdpr2#
也许你可以重构它,以削减一些样板文件:
mwyxok5s3#
您可以从
logging.root.manager.loggerDict
获得所有日志记录器(不包括根日志记录器)的列表。如果你真的想保留一些记录器,这可以让你灵活地放入你自己的过滤器等。
h7appiyu4#
你应该知道你要禁用的日志的确切名称。
"urllib3.connectionpool" != "urllib3"
。