Files
tingquanzhushou/logger.py
2025-02-20 20:20:19 +08:00

67 lines
2.0 KiB
Python

import os
import logging
from datetime import datetime
from typing import Optional
class Logger:
"""统一的日志管理类"""
_instance = None
_initialized = False
def __new__(cls):
if cls._instance is None:
cls._instance = super().__new__(cls)
return cls._instance
def __init__(self):
if not self._initialized:
# 创建日志目录
self.log_dir = os.path.join(os.getenv('APPDATA'), 'Cursor', 'logs')
os.makedirs(self.log_dir, exist_ok=True)
# 配置根日志记录器
self.logger = logging.getLogger('CursorTools')
self.logger.setLevel(logging.INFO)
# 日志格式
self.formatter = logging.Formatter(
'%(asctime)s - %(name)s - %(levelname)s - %(message)s'
)
# 添加处理器
self._add_handlers()
self._initialized = True
def _add_handlers(self):
"""添加日志处理器"""
if not self.logger.handlers:
# 文件处理器
log_file = os.path.join(
self.log_dir,
f'cursor_tools_{datetime.now().strftime("%Y%m%d")}.log'
)
fh = logging.FileHandler(log_file, encoding='utf-8')
fh.setLevel(logging.INFO)
fh.setFormatter(self.formatter)
self.logger.addHandler(fh)
# 控制台处理器
ch = logging.StreamHandler()
ch.setLevel(logging.INFO)
ch.setFormatter(self.formatter)
self.logger.addHandler(ch)
def get_logger(self, name: Optional[str] = None) -> logging.Logger:
"""
获取日志记录器
:param name: 日志记录器名称
:return: 日志记录器实例
"""
if name:
return self.logger.getChild(name)
return self.logger
# 创建全局日志管理器实例
logger = Logger()