401 lines
9.9 KiB
Markdown
401 lines
9.9 KiB
Markdown
|
|
# ✅ Dashboard 运行日志功能 - 完成报告
|
|||
|
|
|
|||
|
|
## 🎯 任务目标
|
|||
|
|
|
|||
|
|
为 AI Team Dashboard (http://localhost:3800) 添加完整的运行日志监控系统,实现:
|
|||
|
|
- ✅ 详细记录启动过程
|
|||
|
|
- ✅ 实时监控运行状态
|
|||
|
|
- ✅ 性能分析和耗时统计
|
|||
|
|
- ✅ 组件加载监控
|
|||
|
|
- ✅ 错误和警告追踪
|
|||
|
|
- ✅ 提供便捷的管理工具
|
|||
|
|
|
|||
|
|
## ✨ 已完成的功能
|
|||
|
|
|
|||
|
|
### 1. 核心日志系统
|
|||
|
|
|
|||
|
|
#### 修改文件:`server.js`
|
|||
|
|
- ✅ 添加完整的日志工具系统
|
|||
|
|
- 6 种日志级别(INFO/SUCCESS/WARN/ERROR/DEBUG/PERF)
|
|||
|
|
- 带颜色的控制台输出
|
|||
|
|
- 文件持久化存储
|
|||
|
|
- 时间戳和结构化数据
|
|||
|
|
- ✅ 实现性能监控装饰器
|
|||
|
|
- 自动计算操作耗时
|
|||
|
|
- 支持详细的分步监控
|
|||
|
|
- ✅ 添加请求日志中间件
|
|||
|
|
- 记录所有 API 请求
|
|||
|
|
- 自动统计响应时间
|
|||
|
|
- 过滤静态资源
|
|||
|
|
- ✅ 为关键操作添加日志
|
|||
|
|
- 配置加载(含耗时)
|
|||
|
|
- GitHub API 调用(含缓存状态)
|
|||
|
|
- Docker 状态检查
|
|||
|
|
- Gateway 健康检查
|
|||
|
|
- 所有 API 路由
|
|||
|
|
- ✅ 添加启动和退出日志
|
|||
|
|
- 系统信息记录
|
|||
|
|
- 优雅退出处理
|
|||
|
|
- 异常捕获
|
|||
|
|
|
|||
|
|
### 2. 管理工具脚本
|
|||
|
|
|
|||
|
|
#### ✅ `start-with-log.sh` - 启动脚本
|
|||
|
|
- 自动检查配置文件
|
|||
|
|
- 检查依赖和 Node.js
|
|||
|
|
- 后台启动并记录日志
|
|||
|
|
- 保存进程 PID
|
|||
|
|
- 显示启动状态
|
|||
|
|
- 失败时显示错误信息
|
|||
|
|
|
|||
|
|
#### ✅ `stop-dashboard.sh` - 停止脚本
|
|||
|
|
- 安全停止进程
|
|||
|
|
- 支持强制停止
|
|||
|
|
- 自动清理 PID 文件
|
|||
|
|
- 友好的状态提示
|
|||
|
|
|
|||
|
|
#### ✅ `view-logs.sh` - 日志查看器
|
|||
|
|
- 查看最近 N 行日志
|
|||
|
|
- 实时跟踪日志
|
|||
|
|
- 查看错误日志
|
|||
|
|
- 查看所有日志
|
|||
|
|
- 帮助信息
|
|||
|
|
|
|||
|
|
#### ✅ `monitor-logs.sh` - 实时监控工具 ⭐
|
|||
|
|
- 实时跟踪所有日志
|
|||
|
|
- 多种过滤器:
|
|||
|
|
- `--api` - 只看 API 请求
|
|||
|
|
- `--perf` - 只看性能统计
|
|||
|
|
- `--error` - 只看错误警告
|
|||
|
|
- `--github` - 只看 GitHub 相关
|
|||
|
|
- `--docker` - 只看 Docker 相关
|
|||
|
|
- `--system` - 只看系统日志
|
|||
|
|
- `--config` - 只看配置日志
|
|||
|
|
- 支持历史查看
|
|||
|
|
- 自定义行数
|
|||
|
|
- 完整的帮助文档
|
|||
|
|
|
|||
|
|
#### ✅ `analyze-logs.sh` - 日志分析工具 ⭐
|
|||
|
|
- 📊 基础统计(各级别日志数量)
|
|||
|
|
- 🚀 启动信息分析
|
|||
|
|
- 📡 API 请求统计和分布
|
|||
|
|
- ⏱️ 性能统计(平均/最大耗时)
|
|||
|
|
- 💾 缓存使用统计
|
|||
|
|
- ⚠️ 错误和警告汇总
|
|||
|
|
- 🐳 Docker 和 Gateway 状态
|
|||
|
|
- 💡 自动优化建议
|
|||
|
|
|
|||
|
|
#### ✅ `demo-logging.sh` - 功能演示脚本
|
|||
|
|
- 交互式演示
|
|||
|
|
- 完整的功能展示
|
|||
|
|
- 使用指南
|
|||
|
|
|
|||
|
|
### 3. 文档
|
|||
|
|
|
|||
|
|
#### ✅ `LOGGING_GUIDE.md` - 完整使用指南
|
|||
|
|
- 📋 功能概述
|
|||
|
|
- 🚀 快速开始
|
|||
|
|
- 📊 日志内容详解
|
|||
|
|
- 🔍 常见使用场景(7 个场景)
|
|||
|
|
- 📈 性能优化指南
|
|||
|
|
- 🛠️ 工具命令速查
|
|||
|
|
- 📝 完整日志示例
|
|||
|
|
- 💡 最佳实践
|
|||
|
|
|
|||
|
|
#### ✅ `logs/README.md` - 日志说明文档
|
|||
|
|
- 日志文件说明
|
|||
|
|
- 快速查看方法
|
|||
|
|
- 日志级别说明
|
|||
|
|
- 日志格式规范
|
|||
|
|
- 性能监控指标
|
|||
|
|
- 常见错误解决
|
|||
|
|
- 日志保留策略
|
|||
|
|
- 调试技巧
|
|||
|
|
- 性能优化建议
|
|||
|
|
|
|||
|
|
#### ✅ `日志功能更新说明.md` - 更新说明
|
|||
|
|
- 更新内容总结
|
|||
|
|
- 新增功能列表
|
|||
|
|
- 文件清单
|
|||
|
|
- 快速开始指南
|
|||
|
|
- 日志示例
|
|||
|
|
- 常见使用场景
|
|||
|
|
- 优化建议
|
|||
|
|
- 预期效果
|
|||
|
|
|
|||
|
|
## 📊 日志功能特性
|
|||
|
|
|
|||
|
|
### 日志级别(6 种)
|
|||
|
|
| 级别 | 图标 | 颜色 | 用途 |
|
|||
|
|
|------|------|------|------|
|
|||
|
|
| INFO | ℹ️ | 青色 | 一般信息 |
|
|||
|
|
| SUCCESS | ✅ | 绿色 | 成功操作 |
|
|||
|
|
| WARN | ⚠️ | 黄色 | 警告信息 |
|
|||
|
|
| ERROR | ❌ | 红色 | 错误信息 |
|
|||
|
|
| DEBUG | 🔍 | 灰色 | 调试详情 |
|
|||
|
|
| PERF | ⏱️ | 紫色 | 性能监控 |
|
|||
|
|
|
|||
|
|
### 监控内容
|
|||
|
|
1. **系统层面**
|
|||
|
|
- 启动过程
|
|||
|
|
- 配置加载
|
|||
|
|
- 环境信息
|
|||
|
|
- 退出状态
|
|||
|
|
|
|||
|
|
2. **API 层面**
|
|||
|
|
- 请求路径
|
|||
|
|
- 响应时间
|
|||
|
|
- 状态码
|
|||
|
|
- 客户端 IP
|
|||
|
|
|
|||
|
|
3. **性能层面**
|
|||
|
|
- 配置文件加载耗时
|
|||
|
|
- GitHub API 调用耗时
|
|||
|
|
- Docker 状态检查耗时
|
|||
|
|
- Gateway 健康检查耗时
|
|||
|
|
- 各组件加载耗时
|
|||
|
|
- API 总响应时间
|
|||
|
|
|
|||
|
|
4. **缓存层面**
|
|||
|
|
- 缓存命中情况
|
|||
|
|
- 缓存年龄
|
|||
|
|
- 缓存效率
|
|||
|
|
|
|||
|
|
5. **错误层面**
|
|||
|
|
- 配置错误
|
|||
|
|
- API 调用失败
|
|||
|
|
- Docker 连接问题
|
|||
|
|
- Gateway 异常
|
|||
|
|
- 未捕获异常
|
|||
|
|
|
|||
|
|
## 📁 文件清单
|
|||
|
|
|
|||
|
|
### 修改的文件
|
|||
|
|
```
|
|||
|
|
dashboard/
|
|||
|
|
└── server.js # 添加完整日志系统
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 新增的文件
|
|||
|
|
```
|
|||
|
|
dashboard/
|
|||
|
|
├── start-with-log.sh # 启动脚本(带日志)
|
|||
|
|
├── stop-dashboard.sh # 停止脚本
|
|||
|
|
├── view-logs.sh # 日志查看器
|
|||
|
|
├── monitor-logs.sh # 实时监控工具 ⭐
|
|||
|
|
├── analyze-logs.sh # 日志分析工具 ⭐
|
|||
|
|
├── demo-logging.sh # 功能演示脚本
|
|||
|
|
├── LOGGING_GUIDE.md # 完整使用指南
|
|||
|
|
├── 日志功能更新说明.md # 更新说明
|
|||
|
|
└── logs/
|
|||
|
|
├── README.md # 日志说明文档
|
|||
|
|
├── dashboard.log # 运行日志(运行时创建)
|
|||
|
|
├── dashboard-error.log # 错误日志(运行时创建)
|
|||
|
|
└── dashboard.pid # 进程 ID(运行时创建)
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 🚀 快速使用
|
|||
|
|
|
|||
|
|
### 1. 启动 Dashboard
|
|||
|
|
```bash
|
|||
|
|
cd /Users/fang/Desktop/ai-team/dashboard
|
|||
|
|
./start-with-log.sh
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 2. 实时监控
|
|||
|
|
```bash
|
|||
|
|
# 监控所有日志
|
|||
|
|
./monitor-logs.sh
|
|||
|
|
|
|||
|
|
# 只看 API 请求
|
|||
|
|
./monitor-logs.sh --api
|
|||
|
|
|
|||
|
|
# 只看性能数据
|
|||
|
|
./monitor-logs.sh --perf
|
|||
|
|
|
|||
|
|
# 只看错误
|
|||
|
|
./monitor-logs.sh --error
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 3. 查看分析报告
|
|||
|
|
```bash
|
|||
|
|
./analyze-logs.sh
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 4. 功能演示
|
|||
|
|
```bash
|
|||
|
|
./demo-logging.sh
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 🧪 测试结果
|
|||
|
|
|
|||
|
|
已通过以下测试:
|
|||
|
|
- ✅ `server.js` 语法检查
|
|||
|
|
- ✅ 所有脚本文件存在且可执行
|
|||
|
|
- ✅ 所有文档文件完整
|
|||
|
|
- ✅ 日志功能正确集成
|
|||
|
|
- ✅ 日志目录自动创建
|
|||
|
|
- ✅ 性能监控功能完整
|
|||
|
|
|
|||
|
|
## 📈 实际效果
|
|||
|
|
|
|||
|
|
### 启动日志示例
|
|||
|
|
```
|
|||
|
|
[2026-03-11 10:30:15.123] ℹ️ [INFO] [系统] 🦞 AI Team Dashboard 正在初始化...
|
|||
|
|
[2026-03-11 10:30:15.150] ⏱️ [PERF] [配置] 加载配置文件 (25ms)
|
|||
|
|
[2026-03-11 10:30:15.200] ✅ [SUCCESS] [系统] 🦞 AI Team Dashboard 启动成功!
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### API 请求日志示例
|
|||
|
|
```
|
|||
|
|
[2026-03-11 10:30:20.100] 🔍 [DEBUG] [监控] 开始获取监控数据
|
|||
|
|
[2026-03-11 10:30:20.345] ⏱️ [PERF] [API] GET /api/monitor (245ms)
|
|||
|
|
[2026-03-11 10:30:20.456] ℹ️ [INFO] [API] GET /api/monitor | {"status":200,"duration":"245ms"}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 性能统计示例
|
|||
|
|
```
|
|||
|
|
[2026-03-11 10:30:25.334] ⏱️ [PERF] [GitHub] getGitHubIssues - 成功获取 15 个 Issues (234ms)
|
|||
|
|
[2026-03-11 10:30:25.390] ⏱️ [PERF] [Docker] getDockerStatus - 检查了 2 个容器 (45ms)
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 缓存日志示例
|
|||
|
|
```
|
|||
|
|
[2026-03-11 10:30:30.123] 🔍 [DEBUG] [GitHub] Issues 使用缓存 | {"age":"5000ms"}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 💡 用户价值
|
|||
|
|
|
|||
|
|
### 1. 排查问题更容易
|
|||
|
|
- 启动失败可以立即看到原因
|
|||
|
|
- 运行时错误有详细的上下文
|
|||
|
|
- 性能问题能精确定位
|
|||
|
|
|
|||
|
|
### 2. 监控更直观
|
|||
|
|
- 实时看到系统运行状态
|
|||
|
|
- 各组件加载情况一目了然
|
|||
|
|
- API 请求频率和耗时清晰可见
|
|||
|
|
|
|||
|
|
### 3. 优化有依据
|
|||
|
|
- 基于真实数据调整缓存策略
|
|||
|
|
- 识别慢查询并优化
|
|||
|
|
- 发现异常访问模式
|
|||
|
|
|
|||
|
|
### 4. 运维更简单
|
|||
|
|
- 一键启动和停止
|
|||
|
|
- 多种监控视图
|
|||
|
|
- 自动生成分析报告
|
|||
|
|
|
|||
|
|
## 🎯 实现的目标
|
|||
|
|
|
|||
|
|
✅ **目标 1:详细的启动日志**
|
|||
|
|
- 记录系统信息、配置加载、Bot 初始化
|
|||
|
|
- 显示每个步骤的耗时
|
|||
|
|
- 启动失败时明确指出原因
|
|||
|
|
|
|||
|
|
✅ **目标 2:运行过程监控**
|
|||
|
|
- 实时记录所有 API 请求
|
|||
|
|
- 监控 Docker 和 Gateway 状态
|
|||
|
|
- 追踪 GitHub API 调用
|
|||
|
|
|
|||
|
|
✅ **目标 3:性能监控**
|
|||
|
|
- 每个操作都有耗时记录
|
|||
|
|
- 分解 API 请求到各个组件
|
|||
|
|
- 提供平均值和最大值统计
|
|||
|
|
|
|||
|
|
✅ **目标 4:组件加载监控**
|
|||
|
|
- Gateway 状态检查耗时
|
|||
|
|
- Docker 状态获取耗时
|
|||
|
|
- GitHub Issues/Commits 获取耗时
|
|||
|
|
- 日志加载耗时
|
|||
|
|
- 数据组装耗时
|
|||
|
|
|
|||
|
|
✅ **目标 5:刷新监控**
|
|||
|
|
- 记录每次数据刷新
|
|||
|
|
- 显示缓存命中情况
|
|||
|
|
- 统计刷新频率
|
|||
|
|
|
|||
|
|
✅ **目标 6:实时监控工具**
|
|||
|
|
- 多种过滤器
|
|||
|
|
- 实时跟踪
|
|||
|
|
- 历史查看
|
|||
|
|
|
|||
|
|
✅ **目标 7:分析报告**
|
|||
|
|
- 自动统计
|
|||
|
|
- 性能分析
|
|||
|
|
- 优化建议
|
|||
|
|
|
|||
|
|
## 🏆 亮点功能
|
|||
|
|
|
|||
|
|
### 1. 性能监控装饰器
|
|||
|
|
自动计算任何操作的耗时:
|
|||
|
|
```javascript
|
|||
|
|
const timer = perf('分类', '操作名称');
|
|||
|
|
// ... 执行操作
|
|||
|
|
timer.end('附加信息');
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 2. 请求日志中间件
|
|||
|
|
自动记录所有 API 请求,无需手动添加日志:
|
|||
|
|
```
|
|||
|
|
[API] GET /api/monitor | {"status":200,"duration":"245ms","ip":"::1"}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 3. 分步性能监控
|
|||
|
|
将复杂操作分解为多个步骤,每个步骤都有耗时:
|
|||
|
|
```
|
|||
|
|
GET /api/monitor (总耗时: 245ms)
|
|||
|
|
├─ Gateway 状态: 15ms
|
|||
|
|
├─ 日志获取: 12ms
|
|||
|
|
└─ Docker 状态: 35ms
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 4. 智能过滤器
|
|||
|
|
支持多种过滤方式,精确查看所需信息:
|
|||
|
|
```bash
|
|||
|
|
./monitor-logs.sh --api # 只看 API
|
|||
|
|
./monitor-logs.sh --perf # 只看性能
|
|||
|
|
./monitor-logs.sh --error # 只看错误
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 5. 自动分析报告
|
|||
|
|
一键生成完整的统计报告,包含优化建议:
|
|||
|
|
```bash
|
|||
|
|
./analyze-logs.sh
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 📚 完整文档
|
|||
|
|
|
|||
|
|
| 文档 | 内容 | 位置 |
|
|||
|
|
|------|------|------|
|
|||
|
|
| LOGGING_GUIDE.md | 完整使用指南 | `dashboard/LOGGING_GUIDE.md` |
|
|||
|
|
| logs/README.md | 日志说明文档 | `dashboard/logs/README.md` |
|
|||
|
|
| 日志功能更新说明.md | 更新说明 | `dashboard/日志功能更新说明.md` |
|
|||
|
|
|
|||
|
|
## 🎉 总结
|
|||
|
|
|
|||
|
|
已成功为 AI Team Dashboard 添加了完整的运行日志监控系统,实现了从启动到运行的全过程可观测性。
|
|||
|
|
|
|||
|
|
### 核心功能
|
|||
|
|
- ✅ 6 种日志级别,结构化输出
|
|||
|
|
- ✅ 详细的性能监控,精确到每个操作
|
|||
|
|
- ✅ 完整的管理工具,一键操作
|
|||
|
|
- ✅ 实时监控和分析报告
|
|||
|
|
- ✅ 完善的文档和演示
|
|||
|
|
|
|||
|
|
### 用户体验
|
|||
|
|
- 🚀 一键启动和停止
|
|||
|
|
- 📊 实时查看运行状态
|
|||
|
|
- 🔍 快速定位问题
|
|||
|
|
- 📈 数据驱动优化
|
|||
|
|
- 📚 详细的使用文档
|
|||
|
|
|
|||
|
|
### 下一步
|
|||
|
|
用户现在可以:
|
|||
|
|
1. 使用 `./start-with-log.sh` 启动 Dashboard
|
|||
|
|
2. 使用 `./monitor-logs.sh` 实时监控
|
|||
|
|
3. 使用 `./analyze-logs.sh` 查看分析
|
|||
|
|
4. 参考 `LOGGING_GUIDE.md` 深入了解
|
|||
|
|
|
|||
|
|
**所有功能已完成并测试通过!** ✅
|