mirror of
https://github.com/tiqi-group/pydase_service_base.git
synced 2025-04-22 17:20:03 +02:00
27 lines
786 B
Python
27 lines
786 B
Python
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()
|
|
)
|