import asyncio
import json
from typing import Any
from multiprocessing import freeze_support

from src.core.master_service import MasterService

from loguru import logger


def json_logs(message: Any) -> None:
    record = message.record
    data = {
        "timestamp": record["time"].strftime("%d.%m.%y %H.%M.%S %Z%z"),
        "level": record["level"].name,
        "message": record["message"],
        "path": record["file"].path,
        "function": record["function"],
        "line": record["line"],
    }
    print(json.dumps(data))


logger.remove(0)
logger.add(json_logs)


if __name__ == '__main__':
    freeze_support()
    loop = asyncio.new_event_loop()
    ms = MasterService(loop)
    ms.loop.run_until_complete(ms.run())
