| import logging |
| import os |
| import sys |
| from utils.helpers.time import get_current_time |
| from utils.args import args |
|
|
| START_TIME = get_current_time(include_ms=False,as_str=False) |
|
|
| |
| class CustomFormatter(logging.Formatter): |
| |
| reset = "\x1b[0m" |
| base_time = "[%(asctime)s]" + reset |
| base_level = "[%(levelname)-5.5s]" + reset |
| base_func = "[%(filename)s::%(lineno)d %(funcName)s]:" + reset |
| base_msg = "%(message)s" + reset |
|
|
| template_line = "\x1b[1m\x1b[1;34m" + base_time + " {}" + base_level + " \x1b[1m\x1b[1;33m" + base_func + " " + base_msg |
|
|
| FORMATS = { |
| logging.DEBUG: template_line.format("\x1b[1m\x1b[1;30m\x1b[47m"), |
| logging.INFO: template_line.format("\x1b[1m\x1b[1;30m\x1b[42m"), |
| logging.WARNING: template_line.format("\x1b[1m\x1b[1;30m\x1b[43m"), |
| logging.ERROR: template_line.format("\x1b[1m\x1b[1;30m\x1b[41m"), |
| logging.CRITICAL: template_line.format("\x1b[1m\x1b[31m\x1b[45m") |
| } |
|
|
| def format(self, record): |
| log_fmt = self.FORMATS.get(record.levelno) |
| formatter = logging.Formatter(log_fmt) |
| return formatter.format(record) |
| |
| def setup_logger(): |
| global START_TIME |
| |
| logger = logging.getLogger() |
| logger.setLevel(getattr(logging, args.log_level)) |
|
|
| file_formatter = logging.Formatter("[%(asctime)s] [%(levelname)-5.5s] [%(filename)s::%(lineno)d %(funcName)s]: %(message)s") |
| file_handler = logging.FileHandler( |
| os.path.join(args.log_dir, "{}.log".format(get_current_time(include_ms=False,as_str=False).strftime("%Y-%m-%d")))) |
| file_handler.setFormatter(file_formatter) |
| |
| logger.addHandler(file_handler) |
|
|
| if not args.silent: |
| console_handler = logging.StreamHandler(sys.stdout) |
| console_handler.setFormatter(CustomFormatter()) |
| logger.addHandler(console_handler) |