예제 #1
0
    def emit(self, record: logging.LogRecord):
        """
        Catch any stdlib log messages from our deps and propagate to loguru.
        """
        if getattr(record, "_from_loguru", False):
            # Skip records already propagated from logugu
            return

        # 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

        record._from_logging = True
        logger.bind(name=record.name).opt(depth=depth, exception=record.exc_info).log(
            level, record.getMessage()
        )