Использование логирования
Для эффективной и организованной работы с логированием в приложениях, в Python существует модуль logging, который предоставляет различные функции и методы для регистрации сообщений и событий. Однако простое использование модуля logging может привести к хаотичной записи логов, что затрудняет их понимание и анализ.
Для более гибкой организации и систематизации регистрации логов рекомендуется использование библиотеки с поддержкой уровней логирования. Они помогают определить уровень и категорию логирования для каждого сообщения или события. Каждое сообщение или событие может быть отнесено к определенной категории и уровню квалификации, что в свою очередь упрощает анализ логов.
Одной из лучших библиотек является использование loguru. Модуль loguru расширяет функционал модуля logging и предоставляет удобные инструменты для работы с логами.
С использованием библиотеки квалификации в Python можно осуществлять следующие действия:
- Конфигурация уровней. Можно определить несколько уровней, например:
debug,info,warning,errorиcritical. Каждый уровень будет соответствовать определенной важности сообщения. - Определение категорий квалификации. Можно создать категории, например:
database,network,api, а также определить собственные категории, связанные с особенностями приложения. - Присвоение каждому сообщению или событию определенного уровня и категории квалификации. Это позволяет логировать только те события, которые относятся к интересующим нас категориям и имеют достаточный уровень важности.
- Фильтрация логов по уровню и категории квалификации. Можно установить правила фильтрации, которые позволят отображать только те сообщения, которые соответствуют определенным уровням и категориям.
Далее нам нужно создать приложение FastAPI. В этом примере мы создадим простое приложение. Когда мы будем обращаться к корневой пути сайта, мы запишем обращение в журнал и вызовем функцию hello_world, и сама функция тоже добавит запись в журнал.
Установим библиотеку журналирования:
pip install loguru
И напишем следующий код:
from fastapi import FastAPI
from loguru import logger
app = FastAPI()
logger.add("info.log")
@app.get("/{name}")
async def main_page(name):
logger.info("Hello from the root path")
hello_world()
return {"message": f"Hello {name}"}
def hello_world():
logger.info("hello() called!")
Разберем основные строчки кода:
logger.add("info.log"), первым делом мы подключаем файл для логов. А далее с помощью метода logger.info() мы записываем в этот файл необходимые данные.
Запустим сервер, при первом запуске у нас будет создан файл info.log. Попробуем перейти по адресу http://127.0.0.1:8000/Ilya. В результате мы увидим в консоли следующий лог:
2024-05-04 13:06:00.208 | INFO | logger:main_page:11 - Hello from the root path
2024-05-04 13:06:00.210 | INFO | logger:hello_world:17 - hello() called!
INFO: 127.0.0.1:49307 - "GET /Ilya HTTP/1.1" 200 OK
Также если мы откроем файл info.log, мы увидим следующее содержание.
Как мы видим, наше логирование успешно работает, в следующем шаге мы разберем основные возможности данной библиотеки.