Как стать автором
Обновить

Логгинг на Python

Python *
Ожидает приглашения

Всем привет! В этом посте я расскажу вам о логгироавнии на Python. Мы рассмотрим два способа. Первый - логгирование в файле, второй - логгирование в консоли. Да, конечно же можно второй вариант можно реализовать обычной функцией print, но это будет не столь красиво. Вот пример нашего лога:

Первый способ

Логгирование в файле

Для начала установим библиотеку logging (pip install logging), далее импортируем из этой библиотеки basicConfig, INFO, info, error и debug.

from logging import basicConfig, DEBUG, info, error, debug, warning
basicConfig(filename="logs.log", level=DEBUG)

Аргумент filename - имя файла в который будут сохранятся данные, level - устанавливает уровень корневого регистратора на указанный уровень логирования, который служит порогом для отслеживания событий. Так как установлен уровень отображения событий level=DEBUG, то в файл будут записаны все сообщения.

Далее мы можем писать одну из функций info, error, debug, warning и смотреть на результат!

Полный исходный код:

from logging import basicConfig, DEBUG, info, error, debug, warning
basicConfig(filename="logs.log", level=DEBUG)

info("info!")
error("error!")
debug("debug!")
warning("warning!")

Второй способ

Логгирование в консоли

Тут нам понадобится: logging, rich. Да, тут нам тоже нежен logging, но использовать мы его будем уже по другому.

import logging
from rich import pretty
from rich.logging import RichHandler

pretty.install()

Тут мы импортируем все нужные библиотеки и инициализируем pretty. Далее приступим к самому коду.

FORMAT = "%(message)s"
logging.basicConfig(
    level="NOTSET",
    format=FORMAT,
    datefmt="[%X]",
    handlers=[RichHandler()],
)
log = logging.getLogger("rich")

Мы так же используем функцию basicConfig, но уже в формате сообщений, а позже "достаём" логгер с дизайном rich (более приятный интерфейс). Вот что может класс в объекте log:

log.debug("DEBUG!")
log.error("Error!")
log.fatal("Fatal error!")
log.info("Some info")
log.warning("Warning!")

Результат:

Полный код:

import logging
from rich import pretty
from rich.logging import RichHandler

pretty.install()

FORMAT = "%(message)s"
logging.basicConfig(
    level="NOTSET",
    format=FORMAT,
    datefmt="[%X]",
    handlers=[RichHandler()],
)
log = logging.getLogger("rich")


log.debug("DEBUG!")
log.error("Error!")
log.fatal("Fatal error!")
log.info("Some info!")
log.warning("Warning!")

Заключение

Логгирование очень важная вещь, например если вы делаете язык прогроммирования, вам это очень поможет, так как найти ошибку или проверить правильность выполнения кода бывает сложнее, чем кажется на первый взгляд. К тому же это позволяет тому кто пытается выполнить не правильный код через ваш язык понять в чём у него ошибка, так как у logging есть возможность увидеть на какой именно строке произошла ошибка.

Я очень надеюсь что новый пост пройдёт модерацию, я очень старался, так же как и над прошлым. Но к счастью или к сожалению его отклонили, почему - не знаю.

Теги:
Хабы:
Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.