diff --git a/src/utils/logger/custom_logging.py b/src/utils/logger/custom_logging.py new file mode 100644 index 0000000..2979f59 --- /dev/null +++ b/src/utils/logger/custom_logging.py @@ -0,0 +1,32 @@ +import logging +from utils.logger.formatter import Colored_Formatter + +class Custom_Logger: + console_handler: logging.StreamHandler + colored_formatter: Colored_Formatter + + @classmethod + def initialize(cls): + # Create the handler for logging to the console + cls.console_handler = logging.StreamHandler() + cls.console_handler.setLevel(logging.DEBUG) + + # Create the colorful formatter + cls.colored_formatter = Colored_Formatter() + cls.console_handler.setFormatter(cls.colored_formatter) + + # Create the loggers for the different sections of the app + discordpy_logger = logging.getLogger("discord") + discordpy_logger.addHandler(cls.console_handler) + discordpy_logger.setLevel(logging.INFO) + + app_logger = logging.getLogger("app") + app_logger.addHandler(cls.console_handler) + app_logger.setLevel(logging.DEBUG) + + utils_logger = logging.getLogger("utils") + utils_logger.addHandler(cls.console_handler) + utils_logger.setLevel(logging.DEBUG) + + + app_logger.debug("Logging successfully initialized") \ No newline at end of file diff --git a/src/utils/logger/formatter.py b/src/utils/logger/formatter.py new file mode 100644 index 0000000..2d4a036 --- /dev/null +++ b/src/utils/logger/formatter.py @@ -0,0 +1,30 @@ +from logging import Formatter +from colorama import Style, Fore + +class Colored_Formatter(Formatter): + def __init__(self, fmt=None, datefmt='%Y-%m-%d %H:%M:%S', style='%'): + super().__init__(fmt, datefmt, style) + + def format(self, record): + # Formatieren des Zeitstempels fett + date = f"{Style.BRIGHT}{Fore.BLACK}{self.formatTime(record, self.datefmt)}{Style.RESET_ALL}" + + # Färben des Log-Levels mit fester Breite + levelname_color = { + 'DEBUG': Fore.CYAN, + 'INFO': Fore.BLUE, + 'WARNING': Fore.YELLOW, + 'ERROR': Fore.RED, + 'CRITICAL': f"{Style.BRIGHT}{Fore.RED}" + } + levelname = f"{levelname_color.get(record.levelname, Fore.WHITE)}{record.levelname:<8}{Fore.RESET}{Style.RESET_ALL}" + + # Färben des Logger-Namens in Magenta mit fester Breite + name = f"{Fore.MAGENTA}{record.name:<20}{Fore.RESET}" + + # Die Nachricht bleibt unverändert + message = record.getMessage() + + # Zusammenfügen der gefärbten Teile + formatted_record = f"{date} {levelname} {name} {message}" + return formatted_record \ No newline at end of file