Files
ai-team-dashboard/dashboard/日志功能更新说明.md
fang 5f14174bb9 feat: 添加 Dashboard 完整日志监控系统 v1.1.0
 新增功能
- 完整的日志记录系统(6 种日志级别)
- 日志配置功能(可通过 config.json 控制)
- 性能监控装饰器和请求日志中间件
- 7 个管理工具脚本
- 完整的文档和使用指南

🛠️ 管理工具
- start-with-log.sh: 启动脚本(带日志)
- stop-dashboard.sh: 停止脚本
- view-logs.sh: 日志查看器
- monitor-logs.sh: 实时监控工具(支持多种过滤器)
- analyze-logs.sh: 日志分析工具(自动生成报告)
- demo-logging.sh: 功能演示脚本
- test-logging-config.sh: 配置测试工具

📊 日志特性
- 支持 INFO/SUCCESS/WARN/ERROR/DEBUG/PERF 6 种级别
- 自动记录启动过程、API 请求、性能统计
- 缓存命中情况追踪
- 分步性能监控
- 智能过滤器

⚙️ 配置功能
- 可控制是否启用日志(默认:true)
- 可设置日志级别(默认:INFO)
- 可控制文件/控制台输出
- 支持动态配置(重启生效)

📚 文档
- LOGGING_GUIDE.md: 完整使用指南
- LOGGING_CONFIG.md: 配置说明文档
- LOGGING_CONFIG_QUICK.md: 快速配置指南
- 多个中文说明文档

🔒 安全
- 添加 .gitignore 排除敏感信息
- config.json(含 Token)不提交
- 日志文件不提交
- 示例配置使用占位符

 测试
- 语法检查通过
- 功能完整性验证
- 配置控制测试通过
- 文档完整性检查

详见 CHANGELOG_v1.1.0.md

Made-with: Cursor
2026-03-11 11:37:35 +08:00

324 lines
8.7 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Dashboard 运行日志功能更新
## 🎉 更新内容
已为 AI Team Dashboard 添加完整的运行日志监控系统,实现从启动到运行的全过程可观测性。
## ✨ 新增功能
### 1. 📝 详细的日志记录
#### 日志级别
- **INFO** ( 青色) - 一般信息,记录系统运行状态
- **SUCCESS** (✅ 绿色) - 成功操作
- **WARN** (⚠️ 黄色) - 警告信息
- **ERROR** (❌ 红色) - 错误信息
- **DEBUG** (🔍 灰色) - 调试信息,详细的运行细节
- **PERF** (⏱️ 紫色) - 性能监控,记录各操作的耗时
#### 记录内容
- ✅ 系统初始化过程
- ✅ 配置文件加载(包含耗时)
- ✅ Bot 配置初始化
- ✅ API 请求详情路径、耗时、状态码、IP
- ✅ 各组件性能监控:
- Gateway 状态检查
- Docker 状态获取
- GitHub Issues 获取
- GitHub Commits 获取
- 日志加载
- 数据组装
- ✅ 缓存命中情况
- ✅ 错误和警告详情
- ✅ 优雅退出和异常捕获
### 2. 🛠️ 管理工具
#### `start-with-log.sh` - 启动脚本
- 自动检查配置文件
- 后台启动并记录日志
- 显示启动状态和访问地址
- 启动失败时显示错误信息
#### `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 状态
- 💡 自动优化建议
### 3. 📄 完整文档
- `logs/README.md` - 日志说明文档
- `LOGGING_GUIDE.md` - 使用指南和最佳实践
## 📦 文件清单
### 修改的文件
- `server.js` - 添加完整的日志系统
- 日志工具函数
- 请求日志中间件
- 各 API 路由的性能监控
- 数据获取函数的日志记录
- 启动和退出的日志记录
### 新增的文件
```
dashboard/
├── start-with-log.sh # 启动脚本(带日志)
├── stop-dashboard.sh # 停止脚本
├── view-logs.sh # 日志查看器
├── monitor-logs.sh # 实时监控工具 ⭐
├── analyze-logs.sh # 日志分析工具 ⭐
├── LOGGING_GUIDE.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
# 方式 1查看所有日志
./monitor-logs.sh
# 方式 2只看 API 请求
./monitor-logs.sh --api
# 方式 3只看性能统计
./monitor-logs.sh --perf
# 方式 4只看错误
./monitor-logs.sh --error
```
### 3. 查看分析报告
```bash
./analyze-logs.sh
```
## 📊 日志示例
### 启动日志
```
[2026-03-11 10:30:15.123] [INFO] [系统] 🦞 AI Team Dashboard 正在初始化...
[2026-03-11 10:30:15.125] [INFO] [系统] 操作系统: darwin 25.2.0
[2026-03-11 10:30:15.127] [INFO] [系统] Node.js: v20.11.0
[2026-03-11 10:30:15.150] [INFO] [配置] 正在加载配置文件...
[2026-03-11 10:30:15.175] ⏱️ [PERF] [配置] 加载配置文件 (25ms)
[2026-03-11 10:30:15.180] ✅ [SUCCESS] [配置] 配置文件加载成功
[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.115] 🔍 [DEBUG] [监控] Gateway 状态获取完成 | {"duration":"15ms"}
[2026-03-11 10:30:20.135] 🔍 [DEBUG] [监控] 日志获取完成 | {"count":60,"duration":"12ms"}
[2026-03-11 10:30:20.170] 🔍 [DEBUG] [监控] Docker 状态获取完成 | {"duration":"35ms"}
[2026-03-11 10:30:20.345] ⏱️ [PERF] [API] GET /api/monitor (245ms)
[2026-03-11 10:30:20.350] [INFO] [监控] 监控数据返回成功 | {"workers":2,"logs":20}
[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.512] ⏱️ [PERF] [GitHub] getRepoCommits [owner/repo] - 成功获取 10 个 Commits (178ms)
[2026-03-11 10:30:25.557] ⏱️ [PERF] [Docker] getDockerStatus - 检查了 2 个容器 (45ms)
```
### 缓存日志
```
[2026-03-11 10:30:30.123] 🔍 [DEBUG] [GitHub] Issues 使用缓存 | {"age":"5000ms"}
[2026-03-11 10:30:35.456] 🔍 [DEBUG] [GitHub] Commits 使用缓存 [owner/repo] | {"age":"10000ms"}
```
## 🔍 常见使用场景
### 排查启动失败
```bash
# 1. 清空旧日志
> logs/dashboard.log
> logs/dashboard-error.log
# 2. 启动服务
./start-with-log.sh
# 3. 查看错误(如果启动失败)
./view-logs.sh -e
```
### 监控运行性能
```bash
# 打开两个终端
# 终端 1监控 API 请求
./monitor-logs.sh --api
# 终端 2监控性能统计
./monitor-logs.sh --perf
```
### 分析慢请求
```bash
# 查看分析报告
./analyze-logs.sh
# 查找耗时超过 500ms 的操作
grep '\[PERF\]' logs/dashboard.log | grep -E '\([5-9][0-9]{2,}ms\)'
```
### 检查缓存效率
```bash
# 查看缓存命中情况
grep '使用缓存' logs/dashboard.log | wc -l
# 查看详细信息
./analyze-logs.sh
```
## 💡 优化建议
### 根据日志优化性能
1. **如果 API 响应慢**
- 查看 `./analyze-logs.sh` 中的性能统计
- 增加缓存时间(修改 `server.js` 中的 `CACHE_TTL`
- 减少单次请求的数据量
2. **如果缓存命中率低**
- 查看 `./analyze-logs.sh` 中的缓存统计
- 增加缓存过期时间
- 检查前端刷新频率
3. **如果 Docker 检查失败**
- 使用 `./monitor-logs.sh --docker` 监控
- 检查 Docker 服务状态
- 验证 docker-compose.yml 位置
4. **如果 Gateway 健康检查失败**
- 使用 `./monitor-logs.sh --error` 查看警告
- 检查 OpenClaw 服务状态
- 访问 `http://127.0.0.1:18789/healthz` 测试
## 📈 性能指标说明
Dashboard 会自动监控以下性能指标:
### API 响应时间
- `GET /api/monitor` - 监控页面数据
- `GET /api/status` - 总览页面数据
- `GET /api/bot/:id` - Bot 详情
- `GET /api/bot/:id/logs` - Bot 日志
### 数据加载时间
- 配置文件加载
- GitHub Issues 获取
- GitHub Commits 获取
- Docker 状态检查
- Gateway 健康检查
### 组件级性能
每个 API 请求都会分解为多个子操作并记录耗时:
```
GET /api/monitor (总耗时: 245ms)
├─ Gateway 状态: 15ms
├─ Gateway 进程: 8ms
├─ 日志获取: 12ms
└─ Docker 状态: 35ms
```
## 🎯 预期效果
使用新的日志系统,您可以:
1. **实时了解系统状态**
- 启动是否正常
- 配置加载是否成功
- 各组件运行状态
2. **精确定位性能瓶颈**
- 哪个 API 最慢
- 哪个组件耗时最长
- 缓存效率如何
3. **快速排查问题**
- 启动失败原因
- 运行时错误详情
- Docker/Gateway 状态异常
4. **数据驱动优化**
- 基于真实数据调整缓存策略
- 识别慢查询并优化
- 发现异常访问模式
## 📚 相关文档
- `LOGGING_GUIDE.md` - 详细使用指南
- `logs/README.md` - 日志文件说明
- 各脚本文件使用 `-h``--help` 查看帮助
## 🔄 后续优化方向
可以考虑进一步添加:
- 日志自动轮转(避免文件过大)
- 日志上传到远程服务器
- Webhook 通知(错误告警)
- 性能趋势分析
- 慢查询自动优化建议
## ✅ 测试确认
已完成:
- ✅ 语法检查通过
- ✅ 所有脚本可执行权限已设置
- ✅ 文档完整性检查
- ✅ 功能完整性确认
## 🎉 完成!
现在您可以:
1. 使用 `./start-with-log.sh` 启动 Dashboard
2. 使用 `./monitor-logs.sh` 实时监控运行日志
3. 使用 `./analyze-logs.sh` 查看性能分析报告
4. 参考 `LOGGING_GUIDE.md` 了解更多使用技巧
祝使用愉快!🦞