mirror of
https://codeberg.org/Freedium-cfd/web.git
synced 2026-03-11 09:04:37 +00:00
30 lines
920 B
Python
30 lines
920 B
Python
# Based on: https://stackoverflow.com/a/72735401/13452914
|
|
import logging
|
|
import sys
|
|
|
|
from loguru import logger
|
|
|
|
|
|
class InterceptHandler(logging.Handler):
|
|
"""
|
|
Add logging handler to augment python stdlib logging.
|
|
|
|
Logs which would otherwise go to stdlib logging are redirected through
|
|
loguru.
|
|
"""
|
|
|
|
@logger.catch(default=True, onerror=lambda _: sys.exit(1))
|
|
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 = sys._getframe(6), 6
|
|
while frame and 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())
|