在记录函数 pylint 错误消息中使用惰性 % 格式

Use lazy % formatting in logging functions pylint error message

我有一个 python 函数如下,当启用 pylint 进行代码扫描时,它会抛出一个惰性格式错误。

def modify_response(data):
    try:
        response = {}
        response["User_ID"] = data[0]["User_ID"]["S"]
        response["Triggered_Timestamp"] = data[0]["Triggered_Timestamp"]["S"]
        return response
    except Exception as e:
        logging.exception("ModifyResponseError: {}".format(e))
        raise ModifyResponseError(json.dumps({"httpStatus": 501,"message": internal_error_message}))

假设该行是

logging.exception("ModifyResponseError: {}".format(e))

警告是

W1202: Use lazy % formatting in logging functions (logging-format-interpolation)

应该向日志记录函数传递格式字符串和参数,而不是已经格式化的字符串。否则,您可能会冒格式化操作本身在日志记录发生之前引发异常的风险。这些都是老派 printf style format strings。出于同样的原因,pylint 也会抱怨 f-strings。

linter 会很满意

logging.exception("ModifyResponseError: %s", e)

详情见logging.debug