2025-04-11 11:22:16 +03:00

39 lines
1.4 KiB
Python

import logging
logger = logging.getLogger("fw")
RESET_SEQ = "\033[0m"
COLOR_SEQ = "\033[1;%dm"
BLACK, RED, GREEN, YELLOW, BLUE, MAGENTA, CYAN, WHITE = range(8)
COLORS = {
"DEBUG": CYAN,
"INFO": WHITE,
"WARNING": YELLOW,
"ERROR": RED,
"CRITICAL": MAGENTA
}
class Formatter(logging.Formatter):
def format(self, record):
return COLOR_SEQ % (30 + COLORS.get(record.levelname, 0)) + super().format(record) + RESET_SEQ
def load(log_level: str) -> None:
logger.setLevel(log_level)
console_handler = logging.StreamHandler()
file_handler = logging.FileHandler("foxworld.log", mode="a", encoding="utf-8")
term_formatter = Formatter("[%(asctime)s.%(msecs)03d] [%(threadName)s/%(levelname)s]: %(message)s", datefmt="%Y.%m.%d %H:%M:%S")
file_formatter = logging.Formatter("[%(asctime)s.%(msecs)03d] [%(threadName)s/%(levelname)s]: %(message)s", datefmt="%Y.%m.%d %H:%M:%S")
console_handler.setFormatter(term_formatter)
file_handler .setFormatter(file_formatter)
logger.addHandler(console_handler)
logger.addHandler(file_handler)
def debug(*args, **kwargs): logger.debug(*args, **kwargs)
def info(*args, **kwargs): logger.info(*args, **kwargs)
def warning(*args, **kwargs): logger.warning(*args, **kwargs)
def error(*args, **kwargs): logger.error(*args, **kwargs)
def critical(*args, **kwargs): logger.critical(*args, **kwargs)
def exception(*args, **kwargs): logger.exception(*args, **kwargs)