You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
79 lines
2.5 KiB
79 lines
2.5 KiB
import os |
|
import logging |
|
from logging.handlers import RotatingFileHandler |
|
|
|
# COLORED_FORMAT = '%(asctime)-15s [%(levelname)s] %(threadName)-12s ' |
|
# NORMAL_FORMAT = '%(filename)s %(funcName)s, line %(lineno)s: %(message)s' |
|
COLORED_FORMAT = '[%(levelname)s] %(threadName)-12s ' |
|
NORMAL_FORMAT = '%(message)s' # '%(filename)s %(funcName)s, line %(lineno)s: %(message)s' |
|
FORMAT = COLORED_FORMAT + NORMAL_FORMAT |
|
|
|
class ColoredFormatter(logging.Formatter): |
|
|
|
grey = "\x1b[38;20m" |
|
yellow = "\x1b[33;20m" |
|
red = "\x1b[31;20m" |
|
bold_red = "\x1b[31;1m" |
|
white = "\x1b[33;97m" |
|
green = "\x1b[33;92m" |
|
reset = "\x1b[0m" |
|
|
|
FORMATS = { |
|
logging.DEBUG: white + COLORED_FORMAT + reset + NORMAL_FORMAT, |
|
logging.INFO: green + COLORED_FORMAT + reset + NORMAL_FORMAT, |
|
logging.WARNING: yellow + COLORED_FORMAT + reset + NORMAL_FORMAT, |
|
logging.ERROR: red + COLORED_FORMAT + reset + NORMAL_FORMAT, |
|
logging.CRITICAL: bold_red + COLORED_FORMAT + reset + NORMAL_FORMAT |
|
} |
|
|
|
def format(self, record): |
|
log_fmt = self.FORMATS.get(record.levelno) |
|
formatter = logging.Formatter(log_fmt, datefmt='%Y-%m-%d %I:%M:%S%p') |
|
return formatter.format(record) |
|
|
|
def set_log_folder(path: str): |
|
dir = os.path.dirname(path) |
|
if len(dir) == 0: |
|
dir = "./" |
|
|
|
os.makedirs(dir, exist_ok=True) |
|
|
|
def set_logger(name: str = "fds", filename: str = "main.log", level: str = "info", logtest=False): |
|
set_log_folder(filename) |
|
logging_levels = ( |
|
logging.CRITICAL, |
|
logging.ERROR, |
|
logging.WARNING, |
|
logging.INFO, |
|
logging.DEBUG, |
|
) |
|
log_level = getattr(logging, level.upper()) |
|
|
|
assert log_level in logging_levels |
|
|
|
|
|
log = logging.getLogger(name) |
|
log.setLevel(log_level) |
|
|
|
file_handler = RotatingFileHandler(filename, maxBytes=100000000, backupCount=10) |
|
file_handler.setLevel(logging.DEBUG) |
|
file_handler.setFormatter(logging.Formatter(FORMAT)) |
|
log.addHandler(file_handler) |
|
|
|
stream_handler = logging.StreamHandler() |
|
# stream_handler.setLevel(log_level) |
|
stream_handler.setLevel(logging.DEBUG) |
|
stream_handler.setFormatter(ColoredFormatter()) |
|
log.addHandler(stream_handler) |
|
|
|
if logtest: |
|
t_log = getattr(log, level) |
|
t_log(f"Logging level: {level.upper()}") |
|
log.info("You can see below log labels") |
|
log.debug("DEBUG level") |
|
log.info("INFO level") |
|
log.warning("WARNING level") |
|
log.error("ERROR level") |
|
log.critical("CRITICAL level") |
|
|
|
return log
|
|
|