tgoop.com/python_real/990
Create:
Last Update:
Last Update:
Улучшаем логирование в Python с Loguru
Встроенный модуль logging
в Python мощный, но довольно многословный и требует много шаблонного кода. Библиотека Loguru упрощает логирование, предлагая удобный и мощный API. Основные особенности и как начать использовать Loguru.
pip install loguru
🔹Простой пример
from loguru import logger
logger.debug("Отладочное сообщение")
logger.info("Информационное сообщение")
logger.success("Сообщение об успешной операции")
logger.warning("Предупреждение")
logger.error("Ошибка")
logger.critical("Критическая ошибка")
Loguru автоматически добавляет:
* временную метку,
* уровень лога,
* путь к файлу и номер строки,
* и форматирует вывод по умолчанию.
🔹Удаление стандартного логгера
По умолчанию Loguru добавляет логгер в
sys.stderr
. Можно удалить его и добавить свой:
logger.remove()
logger.add("file.log", rotation="1 MB", compression="zip")
Здесь:
*
rotation
— лог будет разбит на части при достижении 1 МБ,*
compression
— старые логи будут архивироваться в zip.🔹Форматирование логов
Loguru позволяет настраивать формат:
logger.add("log.txt", format="{time} {level} {message}", level="INFO")
Можно использовать кастомные форматеры и сериализацию в JSON.
🔹Перехват исключений
Loguru умеет автоматически логировать исключения:
@logger.catch
def divide(a, b):
return a / b
divide(1, 0)
Это логирует traceback без необходимости писать
try/except
.🔹Интеграция со стандартным логированием
Можно перенаправить стандартный
logging
в Loguru:
import logging
from loguru import logger
class InterceptHandler(logging.Handler):
def emit(self, record):
logger_opt = logger.opt(depth=6, exception=record.exc_info)
logger_opt.log(record.levelname, record.getMessage())
logging.basicConfig(handlers=[InterceptHandler()], level=0)
🔹Заключение
Loguru — это мощная альтернатива стандартному модулю
logging
, которая избавляет от шаблонного кода и делает логирование более выразительным и удобным. Особенно полезна для проектов, где читаемость и простота важны так же, как функциональность.https://realpython.com/python-loguru/
#python
👉 @python_real