# import logging # # 配置日志器 # logger = logging.getLogger(__name__) # logger.setLevel(logging.DEBUG) # formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') # fhandler = logging.FileHandler('livetalking.log') # 可以改为StreamHandler输出到控制台或多个Handler组合使用等。 # fhandler.setFormatter(formatter) # fhandler.setLevel(logging.INFO) # logger.addHandler(fhandler) # # handler = logging.StreamHandler() # # handler.setLevel(logging.DEBUG) # # sformatter = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s') # # handler.setFormatter(sformatter) # # logger.addHandler(handler) import logging from logging.handlers import TimedRotatingFileHandler from pathlib import Path # 配置日志器(避免重复添加处理器) logger = logging.getLogger(__name__) logger.setLevel(logging.DEBUG) # 日志器级别设为 DEBUG logger.handlers.clear() # 清除已存在的处理器,避免重复输出 # 定义格式化器 formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') # 日志文件路径(放在项目根目录) LOG_PATH = Path(__file__).resolve().parent / "livetalking.log" # 1. 文件处理器:按天滚动,保留 3 天日志 fhandler = TimedRotatingFileHandler( filename=str(LOG_PATH), when="midnight", interval=1, backupCount=3, encoding='utf-8', utc=False ) fhandler.setFormatter(formatter) fhandler.setLevel(logging.DEBUG) logger.addHandler(fhandler) # 2. 控制台处理器(输出到终端,方便实时查看) shandler = logging.StreamHandler() shandler.setFormatter(formatter) shandler.setLevel(logging.DEBUG) logger.addHandler(shandler)