You've already forked wakapi-readme-stats
Verbose logging environmental variable added
This commit is contained in:
65
sources/manager_debug.py
Normal file
65
sources/manager_debug.py
Normal file
@@ -0,0 +1,65 @@
|
||||
from datetime import datetime
|
||||
from logging import getLogger, Logger, StreamHandler
|
||||
from string import Template
|
||||
from typing import Dict
|
||||
|
||||
from humanize import precisedelta
|
||||
|
||||
from manager_environment import EnvironmentManager as EM
|
||||
|
||||
|
||||
def init_debug_manager():
|
||||
"""
|
||||
Initialize download manager:
|
||||
- Setup headers for GitHub GraphQL requests.
|
||||
- Launch static queries in background.
|
||||
"""
|
||||
DebugManager.create_logger("DEBUG" if EM.DEBUG_LOGGING else "ERROR")
|
||||
|
||||
|
||||
class DebugManager:
|
||||
_COLOR_RESET = "\u001B[0m"
|
||||
_COLOR_RED = "\u001B[31m"
|
||||
_COLOR_GREEN = "\u001B[32m"
|
||||
_COLOR_BLUE = "\u001B[34m"
|
||||
_COLOR_YELLOW = "\u001B[33m"
|
||||
|
||||
_DATE_TEMPLATE = "date"
|
||||
_TIME_TEMPLATE = "time"
|
||||
|
||||
_logger: Logger
|
||||
|
||||
@staticmethod
|
||||
def create_logger(level: str):
|
||||
DebugManager._logger = getLogger(__name__)
|
||||
DebugManager._logger.setLevel(level)
|
||||
DebugManager._logger.addHandler(StreamHandler())
|
||||
|
||||
@staticmethod
|
||||
def _process_template(message: str, kwargs: Dict) -> str:
|
||||
if DebugManager._DATE_TEMPLATE in kwargs:
|
||||
kwargs[DebugManager._DATE_TEMPLATE] = f"{datetime.strftime(kwargs[DebugManager._DATE_TEMPLATE], '%d-%m-%Y %H:%M:%S:%f')}"
|
||||
if DebugManager._TIME_TEMPLATE in kwargs:
|
||||
kwargs[DebugManager._TIME_TEMPLATE] = precisedelta(kwargs[DebugManager._TIME_TEMPLATE], minimum_unit="microseconds")
|
||||
|
||||
return Template(message).substitute(kwargs)
|
||||
|
||||
@staticmethod
|
||||
def g(message: str, **kwargs):
|
||||
message = DebugManager._process_template(message, kwargs)
|
||||
DebugManager._logger.info(f"{DebugManager._COLOR_GREEN}{message}{DebugManager._COLOR_RESET}")
|
||||
|
||||
@staticmethod
|
||||
def i(message: str, **kwargs):
|
||||
message = DebugManager._process_template(message, kwargs)
|
||||
DebugManager._logger.debug(f"{DebugManager._COLOR_BLUE}{message}{DebugManager._COLOR_RESET}")
|
||||
|
||||
@staticmethod
|
||||
def w(message: str, **kwargs):
|
||||
message = DebugManager._process_template(message, kwargs)
|
||||
DebugManager._logger.warning(f"{DebugManager._COLOR_YELLOW}{message}{DebugManager._COLOR_RESET}")
|
||||
|
||||
@staticmethod
|
||||
def p(message: str, **kwargs):
|
||||
message = DebugManager._process_template(message, kwargs)
|
||||
DebugManager._logger.error(message)
|
||||
Reference in New Issue
Block a user