bingnoi's picture
Upload 13 files
ecca75f verified
# coding=utf-8
from logging.handlers import TimedRotatingFileHandler
import os
import sys
import logging
class LoggerFactory:
@staticmethod
def create_logger(name=None, level=logging.INFO):
"""create a logger
Args:
name (str): name of the logger
level: level of logger
Raises:
ValueError is name is None
"""
if name is None:
raise ValueError("name for logger cannot be None")
formatter = logging.Formatter("[%(asctime)s] [%(levelname)s] "
"[%(filename)s:%(lineno)d:%(funcName)s] %(message)s")
logger_ = logging.getLogger(name)
logger_.setLevel(level)
logger_.propagate = False
ch = logging.StreamHandler(stream=sys.stdout)
ch.setLevel(level)
ch.setFormatter(formatter)
logger_.addHandler(ch)
return logger_
@staticmethod
def create_logger_with_file(log_file_path: str = None, logger_level=logging.INFO):
logger_inner = logging.getLogger()
logger_inner.setLevel(logger_level)
logger_inner.propagate = True
formatter = logging.Formatter(fmt="[%(asctime)s] [%(filename)s:%(lineno)s - %(levelname)s] %(message)s",
datefmt="%Y-%m-%d %H:%M:%S")
# TimedRotatingFileHandler
if log_file_path:
basedir = os.path.dirname(log_file_path)
if not os.path.isdir(basedir):
os.makedirs(basedir, exist_ok=True)
handler_file = TimedRotatingFileHandler(log_file_path, when="d", interval=1, backupCount=30)
handler_file.setFormatter(formatter)
logger_inner.addHandler(handler_file)
# StreamHandler
handler_console = logging.StreamHandler()
handler_console.setFormatter(formatter)
logger_inner.addHandler(handler_console)
return logger_inner