Run_code_api / src /utils /logger.py
ABAO77's picture
Upload 74 files
6cbca40 verified
raw
history blame
1.8 kB
import logging
import os
from datetime import datetime
from pathlib import Path
import pytz
class CoreCFG:
PROJECT_NAME = "BE"
BOT_NAME = str("BE")
def get_date_time():
return datetime.now(pytz.timezone("Asia/Ho_Chi_Minh"))
DATE_TIME = get_date_time().date()
BASE_DIR = os.path.dirname(Path(__file__).parent.parent)
LOG_DIR = os.path.join(BASE_DIR, "logs")
class CustomFormatter(logging.Formatter):
green = "\x1b[0;32m"
grey = "\x1b[38;5;248m"
yellow = "\x1b[38;5;229m"
red = "\x1b[31;20m"
bold_red = "\x1b[31;1m"
blue = "\x1b[38;5;31m"
white = "\x1b[38;5;255m"
reset = "\x1b[38;5;15m"
base_format = f"{grey}%(asctime)s | %(name)s | %(threadName)s | {{level_color}}%(levelname)-8s{grey} | {blue}%(module)s:%(lineno)d{grey} - {white}%(message)s"
FORMATS = {
logging.INFO: base_format.format(level_color=green),
logging.WARNING: base_format.format(level_color=yellow),
logging.ERROR: base_format.format(level_color=red),
logging.CRITICAL: base_format.format(level_color=bold_red),
}
def format(self, record):
log_fmt = self.FORMATS.get(record.levelno)
formatter = logging.Formatter(log_fmt)
return formatter.format(record)
def custom_logger(app_name="APP"):
logger_r = logging.getLogger(name=app_name)
# Set the timezone to Ho_Chi_Minh
tz = pytz.timezone("Asia/Ho_Chi_Minh")
logging.Formatter.converter = lambda *args: datetime.now(tz).timetuple()
ch = logging.StreamHandler()
ch.setLevel(logging.INFO)
ch.setFormatter(CustomFormatter())
logger_r.setLevel(logging.INFO)
logger_r.addHandler(ch)
return logger_r
logger = custom_logger(app_name=CoreCFG.PROJECT_NAME)