Я поместил следующее в файл с именем 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")
logging.WARNING
, а неlogging.WARN
, и я попробовал ваш код, если вы удалите вызов функцииsetLevel
, ваш код работает (вы, вероятно, уже знали это) - person jramirez   schedule 31.10.2013