Логирование в while цикле. Асинхрон
Есть вот такая конфигурация логгера:
import asyncio
import os
from os.path import dirname, split
from aiologger import Logger
from aiologger.levels import LogLevel
from aiologger.handlers.files import AsyncTimedRotatingFileHandler
from aiologger.formatters.base import Formatter
from aiologger.handlers.files import RolloverInterval
PROJECT_NAME = split(dirname(dirname(__file__)))[1]
DEFAULT_ENCODING = 'utf-8'
DEFAULT_LOG_STYLE = '%(levelname)s %(asctime)s %(filename)s:%(lineno)d %(message)s'
DEFAULT_LOG_FILE = os.path.expanduser("~/logs/SST-LIVE/logging.log")
LOG_PATH = os.path.dirname(DEFAULT_LOG_FILE)
async def sstlogger() -> Logger:
formatter = Formatter(fmt=DEFAULT_LOG_STYLE)
handler = AsyncTimedRotatingFileHandler(
filename=DEFAULT_LOG_FILE,
when=RolloverInterval.DAYS,
backup_count=1,
encoding=DEFAULT_ENCODING,
)
handler.formatter = formatter
logger = Logger(name=PROJECT_NAME, level=LogLevel.INFO)
logger.add_handler(handler)
return logger
Вcе что хочу вывести в общий лог вполне себе хорошо отрабатывает, но только не то, что находится в while циклах в каждой функции.
Вот это в лог уже не попадает:
elif value["value"]=="Over" and float(value["odd"]) < 1.87 and value["handicap"]=="1":
attempts = 0
while attempts < 3:
await asyncio.sleep(120)
await logger.info(f"Повторный запрос из while цикла по ID: {fixture_id} и индикатору"
f" {indicator['name']}")
data = await call_api(endpoint="odds/live", params={"fixture": fixture_id})
if not data["response"]:
await logger.warning(
f"Failed to collect required odds data for match ID: {fixture_id} and indicator "
f"{indicator['name']}."
Вероятно, что есть какая-то особенность логирования когда работаешь с asyncio, но мне о ней неизвестно. Подскажите, как реализовать логирование, чтобы все события залетали в лог?