41 lines
1.3 KiB
Python
41 lines
1.3 KiB
Python
import logging
|
|
|
|
NIKOSIS_LOG_LEVEL = 21
|
|
logging.addLevelName(NIKOSIS_LOG_LEVEL, "NIKO_LOG")
|
|
|
|
class NikoLogFormatter(logging.Formatter):
|
|
def __init__(self, standard_fmt, clean_fmt):
|
|
super().__init__()
|
|
self.standard_formatter = logging.Formatter(standard_fmt)
|
|
self.clean_formatter = logging.Formatter(clean_fmt)
|
|
|
|
def format(self, record):
|
|
if record.levelno == NIKOSIS_LOG_LEVEL:
|
|
return self.clean_formatter.format(record)
|
|
return self.standard_formatter.format(record)
|
|
|
|
# Setup logger
|
|
niko_logger = logging.getLogger("Nikosis Nodes")
|
|
niko_logger.setLevel(logging.INFO)
|
|
|
|
# Remove existing handlers
|
|
if niko_logger.handlers:
|
|
niko_logger.handlers.clear()
|
|
|
|
# Create handler with dual formatter
|
|
console_handler = logging.StreamHandler()
|
|
formatter = NikoLogFormatter(
|
|
standard_fmt='\033[92m%(asctime)s - %(levelname)s - %(message)s\033[0m',
|
|
clean_fmt='\033[36m%(message)s\033[0m' # Cyan for clean messages
|
|
)
|
|
console_handler.setFormatter(formatter)
|
|
niko_logger.addHandler(console_handler)
|
|
niko_logger.propagate = False
|
|
|
|
# Add custom log method
|
|
def niko_log(self, message, *args, **kwargs):
|
|
if self.isEnabledFor(NIKOSIS_LOG_LEVEL):
|
|
self._log(NIKOSIS_LOG_LEVEL, message, args, **kwargs)
|
|
|
|
niko_logger.niko_log = niko_log.__get__(niko_logger, logging.Logger)
|