и посмотреть медиа
PYTHON:TODAY - скрипты
и посмотреть медиа
Python-скрипты, нейросети, боты и автоматизация задач бесплатно.
Python-скрипты, нейросети, боты и автоматизация задач бесплатно.
[PYTHON:TODAY] - канал с готовыми Python-скриптами, ботами, материалами по нейросетям и автоматизации. Всё для разработчиков доступно бесплатно в Telegram.
🐍 Логирование в Python. Объясняем на пальцах с примерами кода. Если в вашем проекте повсюду такое: print("сюда дошли") print("что-то сломалось") print(user) пора познакомиться со стандартным модулем logging. Уже встроен в Python — устанавливать ничего не нужно. 🔣Самый простой вариант import logging logging.basicConfig(level=logging.INFO) logging.debug("Отладочная информация") logging.info("Приложение запущено") logging.warning("Что-то подозрительное") logging.error("Произошла ошибка") logging.critical("Критическая ошибка") В Python есть стандартные уровни логирования: DEBUG 10 INFO 20 WARNING 30 ERROR 40 CRITICAL 50 Чем выше число — тем серьёзнее событие. Если уровень установлен в INFO, сообщения DEBUG выводиться не будут. А если вообще ничего не настраивать, стандартный порог — WARNING. 🛠 Нормальная настройка import logging logging.basicConfig( level=logging.INFO, format="%(asctime)s | %(levelname)s | %(name)s | %(message)s" ) logger = logging.getLogger(__name__) logger.info("Приложение запущено") Получаем примерно: 2026-08-25 14:30:15,123 | INFO | __main__ | Приложение запущено Использование logger = logging.getLogger(__name__) — рекомендуемый подход: имя логгера автоматически соответствует имени текущего модуля, а логгеры образуют иерархию модулей приложения. 💾 Записываем логи в файл logging.basicConfig( filename="app.log", encoding="utf-8", level=logging.INFO, format="%(asctime)s | %(levelname)s | %(message)s" ) Теперь сообщения будут попадать в: app.log Параметр encoding у basicConfig() поддерживается начиная с Python 3.9. 🚨 Как правильно логировать исключения Вот здесь особенно полезен: logger.exception() Например: try: result = 10 / 0 except ZeroDivisionError: logger.exception("Не удалось выполнить вычисление") В лог попадёт не только сообщение, но и traceback исключения. Поэтому внутри except зачастую гораздо полезнее: logger.exception("Ошибка обработки заказа") чем просто: logger.error("Ошибка") 💀 Не делайте так logger.info(f"Пользователь {user_id} вошёл") Для логирования переменных предпочтительнее: logger.info("Пользователь %s вошёл", user_id) Почему? logging откладывает форматирование сообщения до момента, когда оно действительно понадобится. Если запись отфильтруется уровнем логирования, ненужного форматирования можно избежать. 📂 А если нужны одновременно консоль и файл? Тут появляются Handlers: import logging logger = logging.getLogger(__name__) logger.setLevel(logging.DEBUG) formatter = logging.Formatter( "%(asctime)s | %(levelname)s | %(name)s | %(message)s" ) console = logging.StreamHandler() console.setLevel(logging.INFO) console.setFormatter(formatter) file = logging.FileHandler( "app.log", encoding="utf-8" ) file.setLevel(logging.DEBUG) file.setFormatter(formatter) logger.addHandler(console) logger.addHandler(file) Получаем: консоль INFO WARNING ERROR CRITICAL app.log DEBUG INFO WARNING ERROR CRITICAL И это одна из главных возможностей logging: Logger создаёт события, Handler определяет, куда их отправлять, Formatter — как они будут выглядеть, а Filter позволяет дополнительно фильтровать записи. Причём стандартная библиотека умеет отправлять логи не только в консоль или файл. Есть обработчики для очередей, сокетов, Syslog, SMTP и других направлений. 🧠 Запоминаем DEBUG → подробности для отладки INFO → нормальная работа программы WARNING → что-то пошло не совсем так ERROR → операция не выполнена CRITICAL → серьёзная проблема приложения Для маленького скрипта иногда достаточно print(). Но как только появляется бот, API, парсер, сервер, база данных, фоновые задачи или большой проект, нормальные логи экономят огромное количество времени при поиске ошибок. И главное — для базового логирования не нужна ни одна сторонняя библиотека. Всё уже есть в стандартной библиотеке Python. 📌 Сохраняем — пригодится в проекте. #cheatsheet #python #doc
Открыть канал и посмотреть медиаТолько зарегистрированные пользователи могут делиться своим мнением.
Станьте первым, кто поделится своим впечатлением об этом ресурсе!
Канал о BMW: новости, фото, видео, тюнинг и советы для владельцев.
DAO сообщество WTF для совместного управления активами, голосований и децентрализованных инициатив в крипто.