Logzero — это пакет Python, созданный Крисом Хагером, который упрощает отображение информации и сведений об отладке в качестве оператора print в Python 2 и 3.
В Logzero есть различные функции, которые облегчают его использование в проектах Python. К ним относятся:
Чтобы установить logzero с помощью pip, выполните следующий код:
pip install -U logzero
Установку также можно выполнить из публичного репозитория Github:
git clone https://github.com/metachris/logzero.git
cd logzero
python setup.py install
Импортируем логгер из logzero в файл python и попробуем 4 примера уровней логирования:
# Импорт логгера из logzero
from logzero import logger
logger.debug("hello")
logger.info("info")
logger.warning("warning")
logger.error("error")
Для простоты чтения вывод обозначается разными цветами:
Вывод logzeroКак видите, каждый уровень имеет свой цвет, что значительно упрощает его определение.
Многие пользователи Python предпочитают записывать логи в файл. При запуске системы их можно просматривать для проверки ошибок и обслуживания. Вы также можете установить файл для сохранения всех лог-записей в legzero.
Мы импортируем логгер и лог-файл из logezero. Метод logfile используется, чтобы настроить лог-файл для сохранения хранящихся в логе записей.
Теперь лог-записи будут сохранены в файле с именем my_logfile.log:
# Импорт логгера и лог-файла
from logzero import logger, logfile
# Установка пути к лог-файлу
logfile('my_logfile.log')
# Лог-сообщения
logger.info("This log message saved in the log file")
Вывод в my_logfile.log содержит метку уровня логирования (информационный уровень помечен как «I»), дату, время, имя файла python, номер строки и само сообщение:
[I 200409 23:49:59 demo:8] This log message saved in the log file
Не стоит сохранять все записи в один лог-файл, поскольку он становится массивным и увеличивает нагрузку на систему.
Вы можете использовать параметры maxBytes и backupCount для ротации файла с заранее заданным размером. Когда размер будет превышен, файл закроется, а новый файл для вывода откроется автоматически. Переключение происходит каждый раз, когда длина текущего лог-файла составляет почти maxBytes. Если maxBytes или backupCount равен нулю, переключение не происходит.
В приведенном ниже примере мы установили maxBytes равным 1000000 байтов (1 МБ). Следовательно, когда размер превышает 1 МБ, файл закрывается и открывается новый файл для сохранения лог-записей. Количество сохраняемых резервных копий равно трем.
# Установка ротирующегося лог-файла
logzero.logfile("my_logfile.log", maxBytes=1000000, backupCount=3)
Установка уровня логирования предполагает выбор степени важности данного лог-сообщения. Изменить уровень логирования для обработчика файла можно с помощью аргумента loglevel в методе logfile.
В приведенном ниже примере мы установили loglevel как warning
. Следовательно все лог-записи ниже уровня warning не будут сохранены в лог-файл.
# Импорт пакета logzero
from logzero import logger, logfile
import logging
# Вы также можете установить другой уровень логирования для обработчика файла
logfile("my_logfile.log", loglevel=logging.WARNING)
# Лог-сообщения
logger.info("This log message saved in the log file")
logger.warning("This log message saved in the log file")
Лог-запись можно отформатировать на свое усмотрение. Есть несколько способов: вы можете включить дату, время и уровень логирования в свой формат, чтобы знать, когда и на каком уровне был отправлен лог.
В приведенном ниже примере показано, как настроить формат лог-записей.
# Импорт пакета logzero
import logzero
from logzero import logger, logfile
import logging
# Установка пути к файлу
logfile("my_logfile.log")
# Установка пользовательского форматирования
my_formatter = logging.Formatter('%(filename)s - %(asctime)s - %(levelname)s: %(message)s');
logzero.formatter(my_formatter)
# Лог-сообщения
logger.info("This log message saved in the log file")
logger.warning("This log message saved in the log file")
В приведенном выше примере мы настроили формат логирования, включив имя файла, дату, время, имя уровня логирования и сообщение.
Так выглядит вывод в my_logfile.log:
demo.py - 2020–04–10 00:51:44,706 - INFO: This log message saved in the log file
demo.py - 2020–04–10 00:51:44,707 - WARNING: This log message saved in the log file
Вместо использования логгера по умолчанию, можно настроить экземпляры логгера с помощью logzero.setup_logger(..). Он возвращает полностью настроенный экземпляр логгера с различными параметрами, такими как имя, имя лог-файла, форматирование, maxBytes, backupCount и уровень логирования.
Рабочий пример того, как настроить логирование с помощью пользовательского экземпляра логгера:
import logzero package
from logzero import logger, logfile, setup_logger
import logging
# Установка пользовательского форматирования
my_formatter = logging.Formatter('%(filename)s - %(asctime)s - %(levelname)s: %(message)s');
# Создание пользовательского экземпляра логгера
custom_logger = setup_logger(
name="My Custom Logger",
logfile="my_logfile.log",
formatter=my_formatter,
maxBytes=1000000,
backupCount=3,level=logging.INFO)
# Лог-сообщения
custom_logger.info("This log message saved in the log file")
custom_logger.warning("This log message saved in the log file")
В приведенном выше примере мы установили экземпляр пользовательского логгера с именем custom_logger с различными настроенными значениями параметров.
Мы познакомились с основами и рассмотрели некоторые примеры использования пакета Python Logezero. Узнать больше о его функциях можно в документации. Теперь вы сможете реализовать пакет logzero в вашем следующем проекте Python!
Перевод статьи Davis David: How to Practice Logging in Python with Logzero
Комментарии