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