2016-04-27 51 views
1

我有一个记录器,用于我设置在logging.INFO的大多数程序。这对我来说似乎是最合理的设置,因为我登录的东西不一定是警告等等。问题是,requestsurllib对其每个HTTP请求都使用logging.INFO。这为我的一些ETL过程创建了超长日志,并不一定有帮助。降低http请求,上下文管理器或自定义日志记录级别的日志噪音?

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

回答

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()