Files

72 lines
4.1 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# node_logger.py
# Словник ANSI кольорів
COLORS = {
'BLACK': '\33[30m', 'RED': '\33[31m', 'GREEN': '\33[32m', 'YELLOW': '\33[33m',
'BLUE': '\33[34m', 'MAGENTA': '\33[35m', 'CYAN': '\33[36m', 'WHITE': '\33[37m',
'GREY': '\33[90m', 'BRIGHT_RED': '\33[91m', 'BRIGHT_GREEN': '\33[92m',
'BRIGHT_YELLOW': '\33[93m', 'BRIGHT_BLUE': '\33[94m', 'BRIGHT_MAGENTA': '\33[95m',
'BRIGHT_CYAN': '\33[96m', 'BRIGHT_WHITE': '\33[97m',
'RESET': '\33[00m', 'BOLD': '\33[01m', 'NORMAL': '\33[22m', 'ITALIC': '\33[03m',
'UNDERLINE': '\33[04m', 'BLINK': '\33[05m', 'BLINK2': '\33[06m', 'SELECTED': '\33[07m',
'BG_BLACK': '\33[40m', 'BG_RED': '\33[41m', 'BG_GREEN': '\33[42m', 'BG_YELLOW': '\33[43m',
'BG_BLUE': '\33[44m', 'BG_MAGENTA': '\33[45m', 'BG_CYAN': '\33[46m', 'BG_WHITE': '\33[47m',
'BG_GREY': '\33[100m', 'BG_BRIGHT_RED': '\33[101m', 'BG_BRIGHT_GREEN': '\33[102m',
'BG_BRIGHT_YELLOW': '\33[103m', 'BG_BRIGHT_BLUE': '\33[104m', 'BG_BRIGHT_MAGENTA': '\33[105m',
'BG_BRIGHT_CYAN': '\33[106m', 'BG_BRIGHT_WHITE': '\33[107m',
}
# Унікальний глобальний префікс
GLOBAL_PREFIX = "San4itos" # Замініть на бажаний
def log(message, color=None, msg_color=None, prefix=None):
"""Базова функція логування."""
# Колір для [GLOBAL_PREFIX][prefix]
color_code = COLORS.get(str(color).upper(), COLORS.get("BRIGHT_GREEN"))
# Колір для самого повідомлення
msg_color_code = COLORS.get(str(msg_color).upper(), '') # Якщо msg_color не вказано, колір не змінюється
prefix_str = f'[{prefix}]' if prefix is not None else ''
# Збережемо логіку: color - це колір для всього блоку префіксів
full_prefix_block = f"[{GLOBAL_PREFIX}]{prefix_str}"
# Якщо msg_color не вказано (тобто порожній рядок), то повідомлення буде того ж кольору, що й префікс,
# доки не зустрінеться COLORS["RESET"]. Якщо msg_color вказано, він перекриє колір префіксу для тексту повідомлення.
print(f'{color_code}{full_prefix_block}{COLORS.get("RESET")} {msg_color_code}{message}{COLORS.get("RESET")}')
# Невелика зміна: додав RESET після префіксу, щоб msg_color не "успадковував" колір префіксу, якщо msg_color не заданий.
# Або, якщо хочемо поведінки, де msg_color='' означає "продовжити поточний колір":
# print(f'{color_code}{full_prefix_block} {msg_color_code}{message}{COLORS.get("RESET")}')
def _log_node(prefix_block_color_name, node_specific_prefix, message, msg_color='RESET'):
"""Внутрішня функція логування для вузлів (адаптована з rgthree)."""
log(message, color=prefix_block_color_name, prefix=node_specific_prefix, msg_color=msg_color)
def log_node_success(node_name, message, msg_color_override='BRIGHT_GREEN'):
"""Логує повідомлення про успіх."""
_log_node("GREEN", node_name, message, msg_color=msg_color_override)
def log_node_info(node_name, message, msg_color_override='YELLOW'):
"""Логує інформаційне повідомлення."""
_log_node("CYAN", node_name, message, msg_color=msg_color_override)
def log_node_warning(node_name, message, msg_color_override='BRIGHT_YELLOW'):
"""Логує попередження."""
_log_node("YELLOW", node_name, message, msg_color=msg_color_override)
def log_node_error(node_name, message, msg_color_override='BRIGHT_RED'):
"""Логує повідомлення про помилку."""
_log_node("RED", node_name, message, msg_color=msg_color_override)
# Якщо у вас є log_node_debug або log_node_message, їх також потрібно перевірити/виправити:
def log_node_debug(node_name, message, msg_color_override='GREY'):
_log_node("MAGENTA", node_name, message, msg_color=msg_color_override)