降低http请求,上下文管理器或自定义日志记录级别的日志噪声?

时间:2016-04-27 02:43:11

标签: python-3.x logging contextmanager

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

我正在考虑两个解决方案,第一个是创建一个上下文管理功能,在没有有用的日志信息的ETL部分中将脚本的整体级别设置为logging.WARNING。另一种方法是在logging.INFOlogging.WARNING之间创建自定义日志记录级别。哪个更可重复使用,为此目的更有效地工作?

1 个答案:

答案 0 :(得分:1)

当我配置记录器时,我总是添加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()