Выбор ответа Middle Стандартная библиотека обновлено
Форматирование сообщений logging
Вопрос
Почему в логировании пишут logger.debug("user %s", user_id), а не logger.debug(f"user {user_id}")?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Форматирование ленивое, а шаблон помогает группировать. С %s и аргументами форматирование выполняется лениво: если уровень DEBUG выключен, строка не строится, а дорогой repr объекта не вычисляется.
Варианты ответа
- Форматирование ленивое, а шаблон помогает группироватьправильный ответ
- f-строки запрещены в модуле logging и дают warning
- С f-строкой сообщение не попадёт в обработчики лога
- Это только вопрос стиля, разницы в работе нет
Разбор
С %s и аргументами форматирование выполняется лениво: если уровень DEBUG выключен, строка не строится, а дорогой repr объекта не вычисляется. Кроме того, системы сбора логов (Sentry и подобные) группируют события по шаблону сообщения. f-строки работают и записываются, просто форматируются всегда.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.