import time import json from pyapp.status import status_manager from pyapp.namespace import LogType class Log: MAX_TITLE_LENGTH:int = 7 TYPE_COLOR_MAP = { LogType.INFO: "\033[94m", LogType.ERROR: "\033[91m", LogType.WARNING: "\033[93m", LogType.SUCCESS: "\033[92m", LogType.DEBUG: "\033[95m", LogType.TERMINATE: "\033[96m" } def get_time(): return time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) def blue(message): # blue print(f"\033[94m{message}\033[0m") def red(message): # red print(f"\033[91m{message}\033[0m") def yellow(message): # yellow print(f"\033[93m{message}\033[0m") def green(message): # green print(f"\033[92m{message}\033[0m") def log(message, log_type: str): time_str = Log.get_time() space = "" if len(log_type) < Log.MAX_TITLE_LENGTH: space = " " * (Log.MAX_TITLE_LENGTH - len(log_type)) if isinstance(message, dict): formatted_message = json.dumps(message, indent=2, ensure_ascii=False) else: formatted_message = message print (f"\033[1m\033[4m({time_str})\033[0m \033[1m{Log.TYPE_COLOR_MAP[log_type]}[{log_type.capitalize()}]\033[0m{space} {Log.TYPE_COLOR_MAP[log_type]}{formatted_message}\033[0m") status_manager.add_log(time_str, log_type, formatted_message) def bold(message): print(f"\033[1m{message}\033[0m") def underline(message): print(f"\033[4m{message}\033[0m") def info(message): Log.log(message, LogType.INFO) def error(message, terminate=False): Log.log(message, LogType.ERROR) if terminate: Log.terminate("Application Terminated.") def warning(message): Log.log(message, LogType.WARNING) def success(message): Log.log(message, LogType.SUCCESS) def debug(message): Log.log(message, LogType.DEBUG) def terminate(message): Log.log(message, LogType.TERMINATE) exit(1) if __name__ == "__main__": Log.info("This is a info message") Log.error("This is a error message") Log.warning("This is a warning message") Log.success("This is a success message") Log.debug("This is a debug message") Log.blue("This is a blue message") Log.red("This is a red message") Log.yellow("This is a yellow message") Log.green("This is a green message") Log.bold("This is a bold message") Log.underline("This is a underline message") test_dict = { "name": "John Doe", "age": 25, "city": "New York", "hobbies": ["reading", "swimming", "programming"], "address": { "street": "Main Street", "number": 123 } } Log.info("Dictionary test:") Log.info(test_dict)