Python 3.x 减少http请求、contextmanager或自定义日志记录级别的日志噪音?

Python 3.x 减少http请求、contextmanager或自定义日志记录级别的日志噪音?,python-3.x,logging,contextmanager,Python 3.x,Logging,Contextmanager,我在logging.INFO中设置了一个记录器,用于我的大多数程序。对我来说,这似乎是最合理的设置,因为我记录的内容不一定是警告,等等。。。问题是,请求和urllib对它们的每个HTTP请求使用logging.INFO。这会为我的一些ETL过程创建超长日志,而且它在任何方面都不一定有用 我考虑了两种解决方案,第一种是创建一个上下文管理函数,将脚本的总体级别设置为日志记录。警告仅在ETL部分中没有有用的日志记录信息。另一个选项是在logging.INFO和logging.WARNING之间创建自定

我在
logging.INFO
中设置了一个记录器,用于我的大多数程序。对我来说,这似乎是最合理的设置,因为我记录的内容不一定是警告,等等。。。问题是,
请求
urllib
对它们的每个HTTP请求使用
logging.INFO
。这会为我的一些ETL过程创建超长日志,而且它在任何方面都不一定有用


我考虑了两种解决方案,第一种是创建一个上下文管理函数,将脚本的总体级别设置为
日志记录。警告
仅在ETL部分中没有有用的日志记录信息。另一个选项是在
logging.INFO
logging.WARNING
之间创建自定义日志级别。哪一个更可重用,工作效率更高?

在配置记录器时,我总是添加
logging.getLogger('requests')。propagate=False
,以避免来自请求库的日志污染我的日志

例如:

def init_logger(config_file=None, log_level=logging.INFO):
    # Configure the logging system
    if config_file:
        logging.config.fileConfig(config_file, disable_existing_loggers=False)
    else:
        logging.basicConfig(level=log_level)

    # Avoid output from the requests module
    logging.getLogger('requests').propagate = False


def main():
    init_logger(…)


if __name__ == '__main__':
    main()