Использование библиотеки logging в Python

Использование библиотеки logging в Python

Сегодня я расскажу, как использовать встроенную библиотеку logging для логирования ваших программ в Python.

Введение

В процессе разработки приложений мы вводим множество информации в стандартный ввод/вывод.

Данные действия позволяют нам решить несколько ключевых задач

  • Контроль выполнения приложения
  • Отладка приложения
  • Запрос ввода пользователя
  • Сохранения истории выполнения приложения

Важность журналирования

Ведение журнала — очень важный и полезный инструмент в любом языке программирования и при построении приложения. Это может помочь развить лучшее и четкое понимание процесса выполнения программы.

Журналы предоставляют разработчикам дополнительную отладочную функцию, которая отслеживает поток выполнения. Используя поток выполнения, вы можете легко узнать, где скрипты или код вызывают ошибку, а также узнать, насколько хорошо ваш скрипт/код работает, не вызывая никаких ошибок или исключений.

Так обычно выглядят журналы отладки

2021-09-13 19:07:13,202 - root - DEBUG - --------------------------------------------------
2021-09-13 19:07:49,170 - root - INFO - Паук запущен
2021-09-13 19:07:49,195 - urllib3.connectionpool - DEBUG - Starting new HTTP connection (1): 192.168.100.13:8123
2021-09-13 19:07:49,197 - urllib3.connectionpool - DEBUG - http://192.168.100.13:8123 "POST / HTTP/1.1" 200 None
2021-09-13 19:07:49,200 - urllib3.connectionpool - DEBUG - http://192.168.100.13:8123 "POST /?database=default HTTP/1.1" 200 None
2021-09-13 19:07:49,202 - urllib3.connectionpool - DEBUG - http://192.168.100.13:8123 "POST /?database=default HTTP/1.1" 200 None
2021-09-13 19:07:49,204 - urllib3.connectionpool - DEBUG - http://192.168.100.13:8123 "POST /?database=default HTTP/1.1" 200 None
2021-09-13 19:07:49,249 - root - INFO - Запрашиваем количество уникальных ссылок
2021-09-13 19:07:49,249 - root - DEBUG - Сортировка ссылок по дате последнего использования
2021-09-13 19:07:49,397 - urllib3.connectionpool - DEBUG - http://192.168.100.13:8123 "POST /?database=default HTTP/1.1" 200 None
2021-09-13 19:08:24,464 - root - DEBUG - Количество ссылок в бд: 909874
2021-09-13 19:08:24,464 - root - DEBUG - Затраченное время на создание списка ссылок: 35.21463396213949
2021-09-13 19:08:24,464 - root - INFO - Удаление ссылок из блэклиста
2021-09-13 19:08:24,514 - asyncio - DEBUG - Using selector: EpollSelector
2021-09-13 19:08:24,955 - root - DEBUG - Затраченное время на очистку списка от блеклиста: 0.23246393539011478
2021-09-13 19:08:24,955 - root - INFO - Ссылок после очистки: 909874
2021-09-13 19:13:42,664 - root - DEBUG - Запись 100000 строк выполнена
2021-09-13 19:14:38,581 - root - DEBUG - Запись 100000 строк выполнена
2021-09-13 19:14:58,340 - root - DEBUG - Запись 100000 строк выполнена
2021-09-13 19:15:20,308 - root - DEBUG - Запись 100000 строк выполнена
2021-09-13 19:15:30,392 - root - DEBUG - Запись 100000 строк выполнена
2021-09-13 19:15:41,336 - root - DEBUG - Запись 100000 строк выполнена
2021-09-13 19:16:00,031 - root - DEBUG - Запись 100000 строк выполнена
2021-09-13 19:16:10,200 - root - DEBUG - Запись 100000 строк выполнена
2021-09-13 19:16:19,163 - root - DEBUG - Запись 100000 строк выполнена
2021-09-13 19:16:19,966 - root - DEBUG - Запись 9874 строк выполнена
2021-09-13 19:16:20,005 - root - DEBUG - Затраченное время на выполнение операции записи ссылок в карту: 475.00009036809206
2021-09-13 19:16:20,129 - root - DEBUG - Затраченное время на выполнение операции сортировки: 0.12395922839641571
2021-09-13 19:16:20,129 - root - DEBUG - Количество ссылок: 909874
2021-09-13 19:16:20,365 - root - DEBUG - ---------------------------------------------------------------------------

Использование

В этом разделе я покажу, как вы можете создать журнал с помощью Python, используя пакет под названием «Logging«.

Библиотека ведения журнала предоставляются в пакете с Python, но если у вас его нет и вы хотите установить, то вы можете просто запустить приведенную ниже команду pip:

pip install logging

После того как процесс установки завершится, продолжаем далее.

Модуль журнала обеспечивает 5 стандартных уровней, указывающих на серьезность событий:

  • DEBUG
  • INFO
  • WARNING
  • ERROR
  • CRITICAL

Поэтому, если вы хотите зарегистрировать ошибку, то вы будете использовать уровень ERROR, для отправки уведомлений INFO и так далее.

Создание журнала приложения в Python

Теперь давайте создадим простой журнал.

Во-первых, нам нужно импортировать модуль ведения журнала в Python:

import logging

После импорта модуля нам нужно создать объект ведения журнала:

logger = logging.getLogger()

Теперь нам нужно настроить имя файла, в котором должны храниться журналы:

logging.basicConfig(filename='logs.log')

Приведенный выше код создаст новый файл с именем «logs.log« и все сообщения журнала будут сохранены в файле.

Примечание: вы можете дать любое имя файлу журнала, в моем случае я дал имя «logs».

Далее нам нужно установить уровень ведения журнала:

logger.setLevel(logging.DEBUG)

Теперь, когда я настроил конфигурацию, можно попробовать написать события в разные уровни

logging.debug("Уровень журнала: отладочное сообщение")
logging.info("Уровень журнала: информационное сообщение")
logging.warning("Уровень журнала: сообщение с предупреждением")
logging.error("Уровень журнала: сообщение с ошибкой")
logging.critical("Уровень журнала: критическое сообщение")

Полный код для ведения журнала:

import logging

logger = logging.getLogger()
logging.basicConfig(filename="logs.log")
logger.setLevel(logging.DEBUG)

logging.debug("Уровень журнала: отладочное сообщение")
logging.info("Уровень журнала: информационное сообщение")
logging.warning("Уровень журнала: сообщение с предупреждением")
logging.error("Уровень журнала: сообщение с ошибкой")
logging.critical("Уровень журнала: критическое сообщение")

После выполнения приведенного выше кода мы можем увидеть новый файл, созданный с именем файла «logs.log». При открытии файла журнала в блокноте или любом текстовом редакторе мы можем увидеть журналы:

Заключение

Надеюсь, вы поняли, как использовать модуль ведения журнала для создания журналов в Python. Чтобы узнать больше и понять более подробно, вы можете ознакомиться с документацией ведения журнала, предоставленной Python: Logging Documentation.

Егор Егоров

Программирую на Python с 2017 года. Люблю создавать контент, который помогает людям понять сложные вещи. Не представляю жизнь без непрерывного цикла обучения, спорта и чувства юмора.

Ссылка на мой github есть в шапке. Залетай.

Оцените автора
Егоров Егор
Добавить комментарий