import logging from typing import Any from loguru import logger # from: https://github.com/Delgan/loguru section # "Entirely compatible with standard logging" class LoguruInterceptHandler(logging.Handler): def emit(self, record: Any) -> None: # 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 = logging.currentframe() depth = 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() )