design.md
2.91 KB
Design Document: Simple Logging System
Context
当前应用缺乏基本的日志记录功能,当出现问题时难以诊断。需要建立简单实用的日志系统来记录关键事件和错误信息。
Goals / Non-Goals
Goals:
- 提供基本的日志记录功能
- 记录关键操作和错误信息
- 实现简单的日志文件管理
- 使用标准库,保持简单
- 帮助快速定位和解决问题
Non-Goals:
- 不实现复杂的日志分析功能
- 不集成第三方日志服务
- 不实现实时日志监控
- 不设计复杂的日志分类系统
Decisions
1. 日志框架选择
Decision: 使用 Python 标准库 logging 模块
- Why: 标准库提供足够的基础功能,无额外依赖
- Alternatives considered: print语句、简单的文件写入
- Chosen approach: Python logging + 基础配置
2. 日志文件结构
Decision: 单一日志文件
logs/
└── app.log # 统一的应用日志文件
3. 日志轮转策略
Decision: 基于文件大小的简单轮转
- 最大文件大小:10MB
- 保留最近 5 个历史文件
- 不使用压缩,保持简单
4. 日志级别策略
- INFO: 记录正常操作流程
- WARNING: 记录潜在问题
- ERROR: 记录操作失败和错误
- DEBUG: 开发时可启用详细信息
Technical Architecture Details
简化的日志系统
SimpleLogger
├── 初始化基础配置
├── 创建单一logger
├── 设置简单格式化器
└── 实现基础轮转
格式化器
├── 时间戳
├── 日志级别
├── 模块名称
└── 消息内容
关键日志记录点
- 应用启动: 应用启动、配置加载
- 用户认证: 登录成功/失败、认证错误
- 配置操作: 配置文件读取错误
- 数据库连接: 连接成功/失败、查询错误
- 图片生成: API调用成功/失败、生成错误
- 文件操作: 图片保存成功/失败、历史记录错误
性能考虑
- 使用标准库的优化性能
- 简单格式减少格式化开销
- 合理的轮转避免大文件问题
- 关键操作才记录,避免过度日志
Integration Points
模块集成
- DatabaseManager: 添加基础数据库日志
- ImageGeneratorWindow: 添加关键操作日志
- ImageGenerationWorker: 添加生成过程日志
- HistoryManager: 添加文件操作日志
配置集成
{
"logging": {
"enabled": true,
"level": "INFO",
"max_file_size_mb": 10
}
}
Implementation Plan
- Step 1: 创建简单的日志初始化函数
- Step 2: 集成到 DatabaseManager
- Step 3: 集成到图片生成模块
- Step 4: 集成到错误处理
- Step 5: 测试和验证
Design Principles
- 简单实用:只记录必要信息
- 不影响性能:关键操作才记录
- 易于查看:日志文件直接可读
- 维护简单:最小化代码复杂度