AIOgram3 5.2. Создание структуры, продолжение
В этом посте продолжим на чём остановились в предыдущем и добавим логгер.
Дополнительные материалы
Для скачивания материалов необходимо войти или зарегистрироваться
Файлы также можно получить в Telegram-боте по коду: 488659
Реклама
Не уходя из файла settings.py
Перенесём сюда инициализацию бота, а именно строку bot = Bot(token=Secrets.token)
из файла main.py
и сразу заменим содержимое на получение данных из класса Secrets
:
from aiogram import Bot
bot = Bot(token=Secrets.token)
Таким образом, мы сможем обращаться к экземпляру бота не только из главного файла.
Импорт бота.
С файлом settings.py
мы пока закончили.
Перейдём в файл main.py
и изменим импорты.
Было:
from aiogram import Bot, Dispatcher
Поменяем на:
from aiogram import Dispatcher
from botlogic.settings import bot
Добавляем логгер.
Как вы помните, при запуске бота, не понятно, запустился он или нет, поскольку в терминале не было никаких данных. Давайте это исправим, добавив базовый логгер.
Перед переменной bot добавляем пустую строку и вставляем туда код логгера, а в начло файла добавляем строку импорта:
import logging
logging.basicConfig(
level=logging.INFO,
format="%(asctime)s - [%(levelname)s] - %(name)s - (%(filename)s).%(funcName)s(%(lineno)d) - %(message)s"
)
При запуске бота, будет инициализироваться метод basicConfig
из втроенной библиотеки logging
. В него мы передаём два параметра:
level
- определяющий уровень выводимой информации. Основные уровни информирования:DEBUG, INFO, WARNING, ERROR
.format
- определяющий формат выводимой информации.
С уровнем логирования всё понятно, он будет выводить данные уровняINFO
, то о переменных в формате стоит рассказать подробнее.
Строка лога состоит из 7ми переменных:
%(asctime)s
— заменяется на текущее время в формате "год-месяц-день час:минута:секунда";%(levelname)s
— заменяется на уровень важности лога, в нашем случаеINFO
;%(name)s
— заменяется на имя логгера, который записывает сообщение;%(filename)s
— заменяется на имя файла, в котором была вызвана функция логирования;%(funcName)s
— заменяется на имя функции, в которой была вызвана функция логирования;%(lineno)d
— заменяется на номер строки, в которой была вызвана функция логирования;%(message)s
— заменяется на текст сообщения, переданного для записи в лог.
Все статьи