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



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

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

即使结果没有显示,总和仍然是肯定计算的(在范围内增加数字以了解我的意思(。日志记录模块中是否有完全禁用计算的标准方法?如果没有,也欢迎其他建议。

问题是根级别的任何内容(这包括函数中的参数,而不是函数的内部(都是在 Python 看到它时立即计算的(即它在 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)

最新更新