Использование Loguru с Aiogram
Я пишу Telegram-бота с использованием Aiogram. Я бы хотел использовать Loguru для ведения логов бота, потому что библиотеку намного проще настраивать: хочу хранить логи за каждый день в отдельном файле и использовать автоочистку.
from sys import stderr
from loguru import logger
from aiogram.utils import executor
from bot import dp
from handlers import admin, client
logger.add(stderr, enqueue=True)
admin.register_handlers()
client.register_handlers()
if __name__ == '__main__':
executor.start_polling(dp, skip_updates=True)
Однако логи Aiogram не выводятся в консоль, как это происходит при настройки logging.
Возможно ли настроить Loguru для использования с Aiogram?
Ответы (1 шт):
Автор решения: Swtormy X
→ Ссылка
Для aiogram 3.2 подошел такой подход:
import logging
from loguru import logger
class InterceptHandler(logging.Handler):
def emit(self, record):
level = logger.level(record.levelname).name
logger.log(level, record.getMessage())
logging.getLogger('aiogram').setLevel(logging.DEBUG)
logging.getLogger('aiogram').addHandler(InterceptHandler())
logging.getLogger('asyncio').setLevel(logging.DEBUG)
logging.getLogger('asyncio').addHandler(InterceptHandler())