如何完全禁用Python中昂贵的日志记录任务

时间:2018-06-24 17:29:37

标签: python python-3.x logging

我用于记录字典的Python的 pprint 函数对于较大的对象来说相当慢。我找不到使用标准日志记录库完全关闭该功能处理的方法。运行以下代码作为示例:

logging.disable(50)
logging.log(msg=sum(range(20000000)), level=0)

即使结果没有显示出来,总和仍可以确定(计算 range 内的数字以了解我的意思)。日志记录模块中是否有一种标准方法可以完全禁用计算?如果没有,也欢迎其他建议。

1 个答案:

答案 0 :(得分:1)

问题在于,在python看到它之后,便会立即计算出根级的任何内容(包括函数中的参数,而不仅仅是函数的内部)。函数)...要解决此问题,您可以将逻辑放在函数中...然后仅在适当时执行逻辑

def lazy_log(callable_fn,log_name,log_level):
    logger = logging.getLogger(log_name)
    if logger.getEffectiveLevel() > log_level:
        return
    logger.log(msg=str(callable_fn()),level=log_level)

我想可能对您有用

lazy_log(lambda : sum(range(1000000)), None, 51)