![]() |
Логирование ошибок в Python — как я это делаю
Пока писал пару скриптов, понял, что простого print("Ошибка...") мало, особенно если скрипт запускается на сервере и отлаживать вручную неудобно. Сначала попробовал классический модуль logging — он офигенно гнется, можно настроить разное поведение для разных модулей и уровней severity, но бывает, что настройки сложные и их не всегда хочется прописывать для простых проектов.
Что реально помогло — использовать logging с базовой конфигурацией, а для сложных случаев — добавлять обработчики (handlers) и форматтеры, чтобы ошибка попадала и в файл, и в консоль с таймстампом. Из принципов: надо ловить исключения через try-except и в except делать логирование с помощью logger.error, передавая traceback. Это дает возможность потом понять, где именно полетел скрипт. Ещё видел, что некоторые просто пишут ошибки напрямую в файл с открытием его в append-режиме, но это как костыль, который быстро вылезет боком, если логов много и нужны разные уровни. Вот теперь думаю, стоит ли заморачиваться с внешними библиотеками типа loguru или structlog, либо хватит стандартного logging для большинства задач? Короче, если нужен простой рабочий вариант, заложите в проект базовый logging с файлом и консолью, и ловите ошибки через except. Кто еще как логирует? Может, есть какие лайфхаки? |
Ну вот честно, все эти танцы с logging часто выглядят черезчур для простых скриптов. Базовый logging с файлом и консолью обычно норм, дальше — проще некуда. Внешние библиотеки звучат круто, но для большинства задач стандартный функционал более чем достаточен. Зачем усложнять?
|
У меня тоже сначала было ощущение, что logging — это какой-то костыль для простых задач. Но когда пару раз поймал ошибки с traceback и увидел, что можно спокойно смотреть в файл и не лазить в консоль, стало понятнее, зачем он. Пока оставляю базовый logging с файлами и консолью, и на этом достаточно, чтобы не терять время на переизбыточные настройки.
|
| Время: 11:57 |