diff --git a/pyutils/pylogger.py b/pyutils/pylogger.py index 1f7ec8e..17a6f7b 100644 --- a/pyutils/pylogger.py +++ b/pyutils/pylogger.py @@ -1,8 +1,32 @@ #! /usr/bin/env python + +# Global settings +USE_EMOJIS = False +USE_COLORS = False + class Logger: """Helper class for consistent logging with emoji indicators """ - + # ANSI colour codes + COLORS = { + "red": "\033[91m", + "green": "\033[92m", + "yellow": "\033[93m", + "blue": "\033[94m", + "magenta": "\033[95m", + "reset": "\033[0m" + } + + # Define log levels with their corresponding emojis at class level + LOG_LEVELS = { + "error": {"emoji": "โŒ", "text": "[ERROR]", "level": 0, "color": "red"}, + "test": {"emoji": "๐Ÿงช", "text": "[TEST]", "level": 0, "color": "magenta"}, + "info": {"emoji": "โญ๏ธ", "text": "[INFO]", "level": 1, "color": "blue"}, + "success": {"emoji": "โœ…", "text": "[OK]", "level": 1, "color": "green"}, + "warning": {"emoji": "โš ๏ธ ", "text": "[WARN]", "level": 1, "color": "yellow"}, + "max": {"emoji": "๐Ÿ‘€", "text": "[DEBUG]", "level": 2, "color": "magenta"} + } + def __init__(self, verbosity=1, print_prefix="[pylogger]"): """Initialize the Logger @@ -13,15 +37,6 @@ def __init__(self, verbosity=1, print_prefix="[pylogger]"): self.verbosity = verbosity self.print_prefix = print_prefix - # Define log levels with their corresponding icons - self.LOG_LEVELS = { - "error": {"icon": "โŒ", "level": 0}, - "test": {"icon": "๐Ÿงช", "level": 0}, # for pytest - "info": {"icon": "โญ๏ธ", "level": 1}, - "success": {"icon": "โœ…", "level": 1}, - "warning": {"icon": "โš ๏ธ", "level": 1}, - "max": {"icon": "๐Ÿ‘€", "level": 2} - } def log(self, message, level_name=None): """Print a message based on verbosity level @@ -34,15 +49,18 @@ def log(self, message, level_name=None): if level_name is None: level_name = self._detect_level(message) - # Get icon - icon = self.LOG_LEVELS[level_name]["icon"] - + # Check globals at log time + level_info = self.LOG_LEVELS[level_name] + icon = level_info["emoji"] if USE_EMOJIS else level_info["text"] + color = self.COLORS[level_info["color"]] if USE_COLORS else "" + reset = self.COLORS["reset"] + # Get level value - level_value = self.LOG_LEVELS[level_name]["level"] - + level_value = level_info["level"] + # Only print if the inherited verbosity is high enough if self.verbosity >= level_value: - print(f"{self.print_prefix} {icon} {message}") + print(f"{self.print_prefix} {color}{icon}{reset} {message}") def _detect_level(self, message): """Automatically detect appropriate log level based on message content @@ -66,4 +84,4 @@ def _detect_level(self, message): elif "max" or "debug" in message: return "max" else: - return "info" \ No newline at end of file + return "info"