| 86 | |
| 87 | |
| 88 | class InterceptHandler(logging.Handler): |
| 89 | def emit(self, record: logging.LogRecord) -> None: |
| 90 | # Get corresponding Loguru level if it exists |
| 91 | try: |
| 92 | level = logger.level(record.levelname).name |
| 93 | except ValueError: |
| 94 | level = record.levelno # type: ignore |
| 95 | |
| 96 | # Find caller from where originated the logged message |
| 97 | frame, depth = logging.currentframe(), 2 |
| 98 | while frame.f_code.co_filename == logging.__file__: # type: ignore |
| 99 | frame = frame.f_back # type: ignore |
| 100 | depth += 1 |
| 101 | |
| 102 | raw_message = record.getMessage() # type: ignore |
| 103 | |
| 104 | try: |
| 105 | logger.opt(depth=depth, exception=record.exc_info).log(level, raw_message) |
| 106 | except Exception as ex: |
| 107 | pprint(raw_message) |
| 108 | print(raw_message) |
| 109 | raise ex |
| 110 | |
| 111 | return None |
| 112 | |
| 113 | |
| 114 | class GunicornLogger(Logger): |
no outgoing calls
no test coverage detected