Логирование: оставь print позади

preview_player
Показать описание
Логирование - это фиксация состояния вашего приложения в определенный момент времени.
Оно позволяет понимать, что система работает как ожидается (и вообще работает), а также облегчает диагностику проблем

Минусы print:
- нет общего формата (дата)
- не ясно какой модуль в каком месте написал информацию, насколько она важна
- нужно выключать/включать, обязательно забудем удалить
- нельзя гибко настроить куда писать (файл/консоль)

Когда уместен print: в очень простых, маленьких приложениях и скриптах.
Чем больше и сложнее приложение тем важнее использовать специальные инструменты логирования

DIWEC = DEBUG - INFO - WARNING - ERROR - CRITICAL
DEBUG - самая подробная информация, нужна только разработчику и только для отладки, например значения переменных, какие данные получены и т.д.
INFO - информационные сообщения, как подтверждение работы, например запуск сервиса
WARNING - еще не ошибка, но уже надо посмотреть - мало места на диске, мало памяти, много созданных объектов и т.д
ERROR - приложение еще работает и может работать, но что-то пошло не так
CRITICAL - приложение не может работать дальше

logger = getLogger(__name__) - принятый подход для логирования с именем модуля
логеры с именами наследуют настройки от root, но могут быть настроены иначе

Читать:

Присоединяйтесь к помощи каналу, будет интересно)
✔️Юмани 410011506612886

Будь первым везде и всегда, включай уведомления о новых выпусках 🔔

Смотри там где удобно🤩

#Python #PythonRussian #PyCharm
Рекомендации по теме
Комментарии
Автор

друзья, не забываем подписываться на канал, спасибо! Друзья, я оговорился по поводу ф-строк, мы конечно можем их использовать в логгинге, но это не принято и любой линтер вам будет жаловаться на такое использование. Дело в том что ф-строки будут вычисляться всегда, даже для тех событий, которые нам по уровню не нужны (например мы ловим только ЕРРОР, но ф-строка будет скомпонована и для ДЕБАГ/ИНФО). Именно поэтому все используют старый формат %s при логировании

PythonRussian
Автор

Спасибо за всю проделанную работу на твоем канале, ты делаешь бесценный материал. И хотел попросить раскрыть тему с енамами в python, когда применяется, какие проблемы решает, когда нужно его задействовать. Будет очень здорово. Ещё раз спасибо 🙂🙂

BuzinovYura
Автор

Python Russian,
Продолжайте в том же духе, ВЫ МОЛОДЕЦ!
Огромное спасибо за такой детальный подход к объяснению этой темы.
Особо хочу отметить структуру подачи материала — каждый шаг был логичен и последователен,
что позволило легко усваивать информацию.

aquabogira
Автор

Это великолепно. Спасибо огромное, ооочень доступное объяснение!

exponental
Автор

чувак, твой канал - лучший, от души спасибо!

antiloop
Автор

Лучший видос на русском ютубе по теме логирования на python. Автору безмерное уважение, за то что начал объяснять с таких азов, это очень помогло осознать и понять вообще что такое логирование

slavanew
Автор

Логирование занимательная вещь. Не знал что такое есть. Очень доступно изложено. Спасибо.
У себя использовал следующую комбинацию:
def txtSave(txt):
with open('data.log', 'a') as file:
file.write(txt + "\n")

txt = f"{время} сообщение"
txtSave(txt)

erybnikov
Автор

Ахпхпхаххах😂 когда мое логгирование - это вначале print, а потом, когда в продакшн, просто авто-замена принта на log.print("какой-то вывод")
P.S. Если вы думаете, что я шучу, то я не шучу :) даже библиотеку свою написал для этого...

grandlaggingzero
Автор

Большой молодец! Спасибо за объяснение доступным языком.

曾玮-dz
Автор

Спасибо за видос ! Как всегда топ 🎉 а посему ты старую версию pycharm используешь ?

dlaudanum
Автор

Встроенный логгер Python позволяет использовать f-строки, но есть нюансы.

Логгер Python предоставляет возможность форматирования сообщений через старый стиль с процентами (например, %s), который встроен в библиотеку. Однако вы можете использовать f-строки или метод .format() напрямую при создании строки лога, но это будет выполнено сразу при вызове функции логгера, в то время как использование %s позволяет логгеру откладывать форматирование строки до тех пор, пока это не понадобится (например, если уровень лога ниже порога, сообщение не будет формироваться).

peskarr
Автор

Хорошая подача материала, все понятно!

fixcay
Автор

огромное спасибо! Как всегда крайне интересно и полезно!

expoliemexpoliem
Автор

На урал пришла зима, мне дали таску по логированию:)

melordfilms
Автор

Сделайте видео про библиотеки abc и future, пожалуйста. И расскажите про абстрактные классы

АлександрПопов-пщ
Автор

Чтоб совсем тему раскрыть, было бы хорошо дополнить про ротацию логов которые пишутся в файл. Дабы в прекрасный момент не увидеть, что всё свободное дисковое пространство пожрано, но да, в документации это всё есть, RotatingFileHandler нас выручит. А так в целом толково, спасибо за видео.

PsyXOR
Автор

Всегда хотел попробовать, но никак руки не доходили!) Welemir1, спасибо!

Kostya_kzn
Автор

Про конфиг полезно. Уже научился кое-как работать с логером, но не знал про файл

ВалерийМакаров-цж
Автор

00:00 Почему не хватает print()
14:26 включаем logging

alogic
Автор

Можно ли использовать логирование, чтобы отслеживать статистку для дальнейшего анализа? Например количество вызова какой-то команды пользователем в боте, какое-то может количество запросов, количество новых пользователей (т.е например загрузить потом логи в pandas)?

Видео, как всегда 🔥🔥

dianaivanova