manga-dlp/mangadlp/logger.py
Ivan Schaller b7ff17f35b
Some checks failed
ci/woodpecker/pr/test_tox_amd64 Pipeline is pending
ci/woodpecker/push/tests Pipeline failed
ci/woodpecker/pr/tests Pipeline failed
ci/woodpecker/pr/test_tox_arm64 unknown status
ci/woodpecker/pr/test_docker_amd64 unknown status
ci/woodpecker/pr/test_release unknown status
ci/woodpecker/pr/test_docker_arm64 unknown status
fixes for patch 2.2.15
2022-12-30 01:46:53 +01:00

47 lines
1.2 KiB
Python

import logging
import sys
from loguru import logger
LOGURU_FMT = "{time:%Y-%m-%dT%H:%M:%S%z} | <level>[{level: <7}]</level> [{name: <10}] [{function: <20}]: {message}"
# from loguru docs
class InterceptHandler(logging.Handler):
"""
Intercept python logging messages and log them via loguru.logger
"""
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 = logging.currentframe(), 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()
)
# init logger with format and log level
def prepare_logger(loglevel: int = 20) -> None:
config: dict = {
"handlers": [
{
"sink": sys.stdout,
"level": loglevel,
"format": LOGURU_FMT,
}
],
}
logging.basicConfig(handlers=[InterceptHandler()], level=loglevel)
logger.configure(**config)