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