fix: 修复日志系统问题,将日志保存到用户目录,修复打包后崩溃问题

This commit is contained in:
ruisu
2025-02-19 17:56:30 +08:00
parent 0b6b3f13aa
commit 98863b8cb5
2 changed files with 63 additions and 77 deletions

View File

@@ -1,13 +1,8 @@
import logging
import os
import sys
from datetime import datetime
# Configure logging
log_dir = "logs"
if not os.path.exists(log_dir):
os.makedirs(log_dir)
class PrefixFormatter(logging.Formatter):
"""自定义格式化器,为 DEBUG 级别日志添加开源项目前缀"""
@@ -16,37 +11,50 @@ class PrefixFormatter(logging.Formatter):
record.msg = f"[开源项目https://github.com/chengazhen/cursor-auto-free] {record.msg}"
return super().format(record)
def setup_logger():
"""设置日志系统"""
# 获取用户的应用程序支持目录
if sys.platform == 'darwin':
app_support_dir = os.path.expanduser('~/Library/Application Support/听泉Cursor助手')
else:
app_support_dir = os.path.expanduser('~/.听泉Cursor助手')
# 创建应用程序支持目录
os.makedirs(app_support_dir, exist_ok=True)
# 创建日志目录
log_dir = os.path.join(app_support_dir, 'logs')
os.makedirs(log_dir, exist_ok=True)
# 设置日志文件路径
log_file = os.path.join(log_dir, f"{datetime.now().strftime('%Y-%m-%d')}.log")
# 创建日志记录器
logger = logging.getLogger('CursorHelper')
logger.setLevel(logging.DEBUG)
# 创建文件处理器
file_handler = logging.FileHandler(log_file, encoding='utf-8')
file_handler.setLevel(logging.DEBUG)
file_handler.setFormatter(PrefixFormatter('%(asctime)s - %(levelname)s - %(message)s'))
# 创建控制台处理器
console_handler = logging.StreamHandler()
console_handler.setLevel(logging.INFO)
console_handler.setFormatter(PrefixFormatter('%(message)s'))
# 添加处理器到日志记录器
logger.addHandler(file_handler)
logger.addHandler(console_handler)
# 记录初始化信息
logger.info('日志系统初始化成功')
logger.info(f'日志文件路径: {log_file}')
return logger
logging.basicConfig(
level=logging.DEBUG,
format="%(asctime)s - %(levelname)s - %(message)s",
handlers=[
logging.FileHandler(
os.path.join(log_dir, f"{datetime.now().strftime('%Y-%m-%d')}.log"),
encoding="utf-8",
),
],
)
# 为文件处理器设置自定义格式化器
for handler in logging.getLogger().handlers:
if isinstance(handler, logging.FileHandler):
handler.setFormatter(
PrefixFormatter("%(asctime)s - %(levelname)s - %(message)s")
)
# 创建控制台处理器
console_handler = logging.StreamHandler()
console_handler.setLevel(logging.INFO)
console_handler.setFormatter(PrefixFormatter("%(message)s"))
# 将控制台处理器添加到日志记录器
logging.getLogger().addHandler(console_handler)
# 打印日志目录所在路径
logging.info(f"Logger initialized, log directory: {os.path.abspath(log_dir)}")
# 导出日志记录器
logging = setup_logger()
def main_task():
"""