我将以下内容放入名为 的文件repro.py
中,然后键入python repro.py
. (我使用的是 C Python 2.7.5)。它因问题中的错误而失败。消息来源确认 LoggerAdapter 类上没有该名称的方法,但文档(http://docs.python.org/2/library/logging.html#logging.LoggerAdapter)说有:
除了上述之外,LoggerAdapter 还支持 Logger 的以下方法,即 debug()、info()、warning()、error()、exception()、critical()、log()、isEnabledFor()、getEffectiveLevel() ,setLevel(), hasHandlers()。这些方法与 Logger 中的对应方法具有相同的签名,因此您可以互换使用这两种类型的实例。
这是一个错误,还是我误解了什么?如果是后者,是否确实可以使用 LoggerAdapter 实例作为 Logger 实例的替代品?
import logging logging.basicConfig ()
class CustomAdapter(logging.LoggerAdapter):
def process(self, msg, kwargs):
return '[%s] %s' % (self.extra['connid'], msg), kwargs
logger = logging.getLogger(__name__)
adapter = CustomAdapter(logger, {'connid': '1234'})
adapter.setLevel (logging.WARN)
adapter.warning ("Ahoy matey")