""" 日志配置 - 使用标准库logging """ import sys import logging from pathlib import Path from datetime import datetime def setup_logger(log_dir: Path = None, level: str = "INFO"): """ 配置日志系统 Args: log_dir: 日志文件目录,默认为项目根目录下的logs文件夹 level: 日志级别 """ if log_dir is None: log_dir = Path(__file__).parent.parent.parent / "logs" log_dir.mkdir(exist_ok=True) # 设置日志级别 log_level = getattr(logging, level.upper(), logging.INFO) # 配置根日志记录器 logger = logging.getLogger() logger.setLevel(logging.DEBUG) # 清除现有处理器 logger.handlers.clear() # 控制台处理器 console_handler = logging.StreamHandler(sys.stdout) console_handler.setLevel(log_level) console_format = logging.Formatter( '%(asctime)s | %(levelname)-8s | %(name)s:%(funcName)s:%(lineno)d - %(message)s', datefmt='%H:%M:%S' ) console_handler.setFormatter(console_format) logger.addHandler(console_handler) # 文件处理器 log_file = log_dir / f"luoluo_{datetime.now().strftime('%Y-%m-%d')}.log" file_handler = logging.FileHandler(log_file, encoding='utf-8') file_handler.setLevel(logging.DEBUG) file_format = logging.Formatter( '%(asctime)s | %(levelname)-8s | %(name)s:%(funcName)s:%(lineno)d - %(message)s', datefmt='%Y-%m-%d %H:%M:%S' ) file_handler.setFormatter(file_format) logger.addHandler(file_handler) return logger # 创建一个简单的logger别名,兼容loguru的接口 class SimpleLogger: """简单的logger包装类,提供类似loguru的接口""" def __init__(self): self._logger = logging.getLogger("LuoLuoTool") def debug(self, message): self._logger.debug(message) def info(self, message): self._logger.info(message) def warning(self, message): self._logger.warning(message) def error(self, message): self._logger.error(message) def critical(self, message): self._logger.critical(message) # 全局logger实例 logger = SimpleLogger()