首页 > 解决方案 > 延迟 python 日志记录和 pylint 日志记录格式插值

问题描述

AFAIK pylint 的 logging-format-interpolation 试图推动我使用“%”-interpolation,因此它可以将执行延迟到严格必要的情况,例如此处所述。

但是,我无法提供实际发生这种延迟的示例:

import logging

logging.basicConfig(level=logging.INFO)

def log_identity(s: str) -> str:
    logging.warning('warning %s', s)
    return s

logging.debug('%s', log_identity('c'))  # Expect delay, i.e. no warning c
logging.debug(f"{log_identity('d')}")  # Expect no delay, i.e. warning d

然而,虽然实际的调试部分从不发出消息(按照预期),但字符串两次都会被插值:

WARNING:root:warning c
WARNING:root:warning d

没有明确使用.isEnabledFor(参见此处),有没有一种方法可以防止使用“%”-interpolation 评估日志消息?如果是这样,它看起来如何?

标签: pythonloggingpylint

解决方案


推荐阅读