manga-dlp/mangadlp/logger.py

45 lines
1.2 KiB
Python
Raw Normal View History

import logging
import sys
from loguru import logger
2022-10-06 21:26:04 +02:00
2022-12-30 01:46:53 +01:00
LOGURU_FMT = "{time:%Y-%m-%dT%H:%M:%S%z} | <level>[{level: <7}]</level> [{name: <10}] [{function: <20}]: {message}"
2022-12-30 01:46:53 +01:00
# from loguru docs
class InterceptHandler(logging.Handler):
"""Intercept python logging messages and log them via loguru.logger."""
2022-12-30 01:46:53 +01:00
def emit(self, record):
# Get corresponding Loguru level if it exists
try:
level = logger.level(record.levelname).name
except ValueError:
level = record.levelno
2022-07-15 14:04:22 +02:00
2022-12-30 01:46:53 +01:00
# 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,
2022-12-30 01:46:53 +01:00
}
],
}
2022-12-30 01:46:53 +01:00
logging.basicConfig(handlers=[InterceptHandler()], level=loglevel)
logger.configure(**config)