Вы не можете использовать форматирование нового стиля при использовании модуля регистрации; используйте %s
вместо {}
.
logging.info('date=%s', date)
Модуль протоколирования использует оператор старого стиля %
для форматирования строки журнала. Более подробно см. Метод debug
.
Если вы действительно хотите использовать форматирование строк str.format()
, рассмотрите использование пользовательских объектов, которые применяют форматирование «поздно», когда на самом деле преобразован в строку:
class BraceMessage(object):
def __init__(self, fmt, *args, **kwargs):
self.fmt = fmt
self.args = args
self.kwargs = kwargs
def __str__(self):
return self.fmt.format(*self.args, **self.kwargs)
__ = BraceMessage
logging.info(__('date={}', date))
Это подход, который предлагает Python 3 logging
документация модуля , и также работает на Python 2.