Ответ 1
Это неверно для оператора logger, потому что он полагается на прежний формат "%", такой как строка, чтобы обеспечить ленивую интерполяцию этой строки, используя дополнительные аргументы, данные для вызова журнала. Например, вместо выполнения:
logger.error('oops caused by %s' % exc)
вы должны сделать
logger.error('oops caused by %s', exc)
поэтому строка будет только интерполирована, если сообщение действительно вышло.
Вы не можете воспользоваться этой функциональностью при использовании .format()
.
В разделе Optimization logging
docs:
Форматирование аргументов сообщений отложено до тех пор, пока его не избежать. Однако вычисление аргументов, переданных методу ведения журнала, также может быть дорогостоящим, и вы можете избежать этого, если регистратор просто выбросит ваше событие.