Логирование в Python с помощью Logzero



Книга Логирование в Python с помощью Logzero



Logzero — это пакет Python, созданный Крисом Хагером, который упрощает отображение информации и сведений об отладке в качестве оператора print в Python 2 и 3.


В Logzero есть различные функции, которые облегчают его использование в проектах Python. К ним относятся:


  • Простота регистрации в консоли и/или файле.
  • Полностью настроенный стандартный логгер Python.
  • Приятное форматирование, включающее специфичные для уровня цвета в консоли.
  • Работа со всеми видами кодировок символов и специальными символами.
  • Совместимость с Python 2 и 3.
  • Отсутствие необходимости в зависимостях 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!


571   0  

Comments

    Ничего не найдено.