import os import logging from datetime import datetime def get_logger(root, name=None, debug=True): """ 创建带时间戳的日志记录器 :param root: 日志文件目录 :param name: 日志名称 :param debug: 是否开启调试模式 """ logger = logging.getLogger(name) logger.setLevel(logging.DEBUG) # 避免重复添加 Handler if logger.hasHandlers(): logger.handlers.clear() # 时间格式改为 年/月/日 时:分:秒 formatter = logging.Formatter("%(asctime)s - %(message)s", "%Y/%m/%d %H:%M:%S") # 控制台输出 console_handler = logging.StreamHandler() console_handler.setFormatter(formatter) console_handler.setLevel(logging.DEBUG if debug else logging.INFO) logger.addHandler(console_handler) # 文件输出(仅非 debug 模式) if not debug: os.makedirs(root, exist_ok=True) logfile = os.path.join(root, "run.log") print(f"Create Log File in: {logfile}") file_handler = logging.FileHandler(logfile, mode="w", encoding="utf-8") file_handler.setLevel(logging.DEBUG) file_handler.setFormatter(formatter) logger.addHandler(file_handler) return logger if __name__ == "__main__": time_str = datetime.now().strftime("%Y%m%d%H%M%S") print(time_str) logger = get_logger("./logs", debug=False) # 改成 False 测试文件输出 logger.debug("this is a {} debug message".format(1)) logger.info("this is an info message") logger.debug("this is a debug message") logger.info("this is an info message")