LOG.info没有格式化字符串的选项

时间:2018-09-10 16:03:41

标签: python python-2.7

我正在python2.7中使用以下日志记录模块

import logging
LOG = logging.getLogger(__name__)

我可以做的地方 LOG.warn("Namespace {0} is not compliant.").format(namespace)

但不是 LOG.info("Namespace {0} is not compliant.").format(namespace)

但是这可行: LOG.info("Namespace %s is hipaa compliant.", namespace)

我想知道为什么只有LOG.info不起作用。

1 个答案:

答案 0 :(得分:0)

此代码:

LOG.warn("Namespace {0} is not compliant.").format(namespace)

等效于此:

x = LOG.warn("Namespace {0} is not compliant.")

x.format(namespace)           # Return value unused

换句话说:

  • 您要将未格式化的字符串传递给warn
  • 然后您要在该返回值上调用.format()
    • Logger.warning的返回值未指定,但显然是一个字符串。
    • 字符串在Python中是不可变的,因此无效(因为您没有保存结果)。

相反,您需要这样做:

LOG.warn( "Namespace {0} is not compliant.".format(namespace) )