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



我在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 不起作用。

此代码:

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) )

最新更新