| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546 | import loggingimport sysfrom loguru import loggerfrom config.logging import settingsdef register(app=None):    level = settings.LOG_LEVEL    path = settings.LOG_PATH    retention = settings.LOG_RETENTION    # intercept everything at the root logger    logging.root.handlers = [InterceptHandler()]    logging.root.setLevel(level)    # remove every other logger's handlers    # and propagate to root logger    for name in logging.root.manager.loggerDict.keys():        logging.getLogger(name).handlers = []        logging.getLogger(name).propagate = True    # configure loguru    logger.configure(        handlers=[            {"sink": sys.stdout},            {"sink": path, "rotation": "00:00", "retention": retention},        ]    )class InterceptHandler(logging.Handler):    def emit(self, record):        # Get corresponding Loguru level if it exists        try:            level = logger.level(record.levelname).name        except ValueError:            level = record.levelno        # Find caller from where originated the logged message        frame, depth = logging.currentframe(), 2        while frame.f_code.co_filename == logging.__file__:            frame = frame.f_back            depth += 1        logger.opt(depth=depth, exception=record.exc_info).log(level, record.getMessage())
 |