class RotatingFileLogger:
def __init__(self,log_name):
self.log_name = log_name
self.logger = self._setup_log()
def _setup_log(self):
logger = logging.getLogger(self.log_name)
log_path = os.path.join("D:\\Code\\atc-client\\client\\log", self.log_name)
logger.setLevel(logging.INFO)
file_handler = TimedRotatingFileHandler(
filename=log_path, when="M", interval=1, backupCount=30
)
file_handler.suffix = "%Y-%m-%d %H:%M:%S.log"
file_handler.extMatch = re.compile(r"^\d{4}-\d{2}-\d{2}:.log$")
file_handler.setFormatter(
logging.Formatter(
"[%(asctime)s] [%(process)d] [%(levelname)s] - %(module)s.%(funcName)s (%(filename)s:%(lineno)d) - %(message)s"
)
)
logger.addHandler(file_handler)
# 记录正常的 print 信息
# 控制台的结果
sys.stdout = Logger(log_path, sys.stdout)
sys.stderr = Logger(log_path, sys.stderr)
return logger