import uvicorn import logging from injector import Injector,inject from src.configuration import LogConf, singleton from src.loki_logger_handler.loki_logger_handler import LokiLoggerHandler import argparse import yaml with open(".env.yaml", "r") as file: config = yaml.safe_load(file) log_handler_confg = config["log"]["handlers"] log_handlers = [] for handler_config in log_handler_confg: if handler_config["type"] == "loki": log_handlers.append(LokiLoggerHandler( url=handler_config["url"], additional_headers={"X-Odin-Auth": handler_config["x-odin-auth"]}, labels=handler_config["labels"], label_keys={}, timeout=10, enable_structured_loki_metadata=True, loki_metadata={"service": "user-service", "version": "1.0.0"}, insecure_ssl_verify=False )) logging.basicConfig(level=logging.DEBUG, handlers=log_handlers) logging.info("logging init finish") @singleton class Main(): @inject def __init__(self, logConf: LogConf) -> None: logging.basicConfig(level=logConf.level,filename=logConf.filename,format="%(asctime)s %(levelname)s %(message)s") def run(self): logger = logging.getLogger(__name__) logger.info("jarvis-models start", extra={"version": "0.0.1"}) uvicorn.run("server:app", host="0.0.0.0", port=8000, log_level="info",reload = True) if __name__ == "__main__": injector = Injector() main = injector.get(Main) main.run()