39 lines
1.4 KiB
Python
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)
|