Сегодня я расскажу, как использовать встроенную библиотеку 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.