Initial commit
This commit is contained in:
commit
55c3caa766
49 files changed
+1602
No files matched your search
Whitespace-only changes.
@@ -0,0 +1,25 @@
|
||||
import logging
|
||||
|
||||
|
||||
class ColorFormatter(logging.Formatter):
|
||||
COLORS = {
|
||||
'DEBUG': '\033[37m',
|
||||
'INFO': '\033[36m',
|
||||
'WARNING': '\033[33m',
|
||||
'ERROR': '\033[31m',
|
||||
'CRITICAL': '\033[41m',
|
||||
}
|
||||
RESET = '\033[0m'
|
||||
BOLD = '\033[1m'
|
||||
|
||||
def format(self, record):
|
||||
color = self.COLORS.get(record.levelname, self.RESET)
|
||||
message = super().format(record)
|
||||
|
||||
if record.levelname in ('WARNING', 'ERROR', 'CRITICAL'):
|
||||
message = f"{self.BOLD}{color}{message}{self.RESET}"
|
||||
else:
|
||||
message = f"{color}{message}{self.RESET}"
|
||||
|
||||
return message
|
||||
|
||||
@@ -0,0 +1,42 @@
|
||||
import logging
|
||||
import threading
|
||||
from pathlib import Path
|
||||
|
||||
from colony.core.logger.colors import ColorFormatter
|
||||
|
||||
LOG_DIR = Path("logs")
|
||||
LOG_DIR.mkdir(exist_ok=True)
|
||||
|
||||
_loggers = {}
|
||||
_logger_lock = threading.Lock()
|
||||
FIXED_NAME_WIDTH = 15
|
||||
|
||||
def get_logger(name: str) -> logging.Logger:
|
||||
with _logger_lock:
|
||||
if name in _loggers:
|
||||
return _loggers[name]
|
||||
|
||||
logger = logging.getLogger(name)
|
||||
logger.setLevel(logging.DEBUG)
|
||||
|
||||
ch = logging.StreamHandler()
|
||||
ch.setLevel(logging.DEBUG)
|
||||
ch_formatter = ColorFormatter(
|
||||
f'[%(asctime)s] %(levelname)-7s %(name)-{FIXED_NAME_WIDTH}s: %(message)s',
|
||||
datefmt='%Y-%m-%d %H:%M:%S'
|
||||
)
|
||||
ch.setFormatter(ch_formatter)
|
||||
logger.addHandler(ch)
|
||||
|
||||
fh = logging.FileHandler(LOG_DIR / f"{name}.log", encoding='utf-8')
|
||||
fh.setLevel(logging.DEBUG)
|
||||
fh_formatter = logging.Formatter(
|
||||
f'[%(asctime)s] [%(threadName)s] %(levelname)-8s %(name)-{FIXED_NAME_WIDTH}s: %(message)s',
|
||||
datefmt='%Y-%m-%d %H:%M:%S'
|
||||
)
|
||||
fh.setFormatter(fh_formatter)
|
||||
logger.addHandler(fh)
|
||||
|
||||
logger.propagate = False
|
||||
_loggers[name] = logger
|
||||
return logger
|
||||
Reference in new issue
Block a user