减少 http 请求、上下文管理器或自定义日志记录级别的日志噪音



我有一个记录器,我将其用于我在logging.INFO设置的大多数程序。 这对我来说似乎是最合理的设置,因为我记录的东西不一定是警告,等等...... 问题是,requestsurllib对他们的每个HTTP请求都使用logging.INFO。 这会为我的一些 ETL 过程创建超长的日志,并且不一定有任何帮助。

我在考虑两种解决方案,第一种是创建一个上下文管理功能,将脚本的整体级别设置为logging.WARNING,仅在没有有用日志记录信息的 ETL 部分。 另一种选择是在logging.INFOlogging.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()

最新更新