48 lines
1.3 KiB
Python
48 lines
1.3 KiB
Python
# /scripts/logger.py
|
|
|
|
import logging
|
|
import sys
|
|
import copy
|
|
from .node_name import get_node_name
|
|
from enum import Enum
|
|
|
|
|
|
class LoggerSettings(Enum):
|
|
LOG_LEVEL = logging.INFO
|
|
LOG_NAME = "OpenImage"
|
|
|
|
|
|
class OpenImageLoggerFormatter(logging.Formatter):
|
|
COLORS = {
|
|
"INFO": "\033[0;32m", # Green
|
|
"WARNING": "\033[93m", # Yellow
|
|
"ERROR": "\033[91m", # Red
|
|
"RESET": "\033[0m", # Reset
|
|
}
|
|
|
|
def format(self, record):
|
|
record_copy = copy.copy(record)
|
|
|
|
levelname = record_copy.levelname
|
|
seq = self.COLORS.get(levelname, self.COLORS["RESET"])
|
|
record_copy.levelname = f"{seq}{levelname}{self.COLORS['RESET']}"
|
|
|
|
record_copy.name = f"\033[1;34m{record_copy.name}\033[0m"
|
|
|
|
return super().format(record_copy)
|
|
|
|
|
|
def get_node_logger_prefix(extra_pnginfo, unique_id, display_name):
|
|
return f"\"{get_node_name(extra_pnginfo, unique_id, display_name)}\"" + (f" ({display_name})" if display_name else "") + ":"
|
|
|
|
|
|
logger = logging.getLogger(LoggerSettings.LOG_NAME.value)
|
|
logger.propagate = False
|
|
|
|
if not logger.handlers:
|
|
handler = logging.StreamHandler(sys.stdout)
|
|
handler.setFormatter(OpenImageLoggerFormatter("[%(name)s][%(levelname)s] %(message)s"))
|
|
logger.addHandler(handler)
|
|
|
|
logger.setLevel(LoggerSettings.LOG_LEVEL.value)
|