File size: 1,903 Bytes
1905805 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 | 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)
# Setup formatters and handlers
class CustomFormatter(logging.Formatter):
# Using console color codes to style text
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) |