import inspect import traceback from utils.utils import trace_origin class bcolors: HEADER = '\033[95m' OKBLUE = '\033[94m' OKCYAN = '\033[96m' OKGREEN = '\033[92m' WARNING = '\033[93m' FAIL = '\033[91m' ENDC = '\033[0m' BOLD = '\033[1m' UNDERLINE = '\033[4m' class logger: def debug(*args, **kwargs): from infra.config import Settings if not Settings.EnableDebugMessages: return print(bcolors.HEADER, end='[DEBUG] ') print(*args, **kwargs) print(bcolors.ENDC, end='') def error(*args, **kwargs): print(bcolors.FAIL, end='[ERROR] ') print(*args, **kwargs) print(bcolors.ENDC, end='') def warn(*args, trace_origin_flag=False, stacklevel=0, \ print_stack=False, **kwargs): print(bcolors.WARNING, end='[WARNING] ') if trace_origin_flag: trace_origin(inspect.currentframe(), stacklevel) if print_stack: print(traceback.format_exc()) print(*args, **kwargs) print(bcolors.ENDC, end='') def verbose(*args, trace_origin_flag=False, stacklevel=0, **kwargs): from infra.config import Settings if not Settings.EnableVerboseMessages: return if trace_origin_flag: trace_origin(inspect.currentframe(), stacklevel) print(bcolors.OKCYAN, end='[VERBOSE] ') print(*args, **kwargs) print(bcolors.ENDC, end='') def log(*args, **kwargs): print(bcolors.OKGREEN, end='[LOG] ') print(*args, **kwargs) print(bcolors.ENDC, end='') def info(*args, **kwargs): print(bcolors.OKBLUE, end='[INFO] ') print(*args, **kwargs) print(bcolors.ENDC, end='') class DisableVerbose(object): def __enter__(self): from infra.config import Settings self.verbose_flag = Settings.EnableVerboseMessages Settings.EnableVerboseMessages = False def __exit__(self, exc_type, exc_value, traceback): from infra.config import Settings Settings.EnableVerboseMessages = self.verbose_flag