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')