371 lines
7.4 KiB
Markdown
371 lines
7.4 KiB
Markdown
|
|
# Dashboard 日志配置说明
|
|||
|
|
|
|||
|
|
## 📋 概述
|
|||
|
|
|
|||
|
|
Dashboard 支持通过 `config.json` 配置日志功能,可以灵活控制日志的记录行为。
|
|||
|
|
|
|||
|
|
## ⚙️ 配置项
|
|||
|
|
|
|||
|
|
在 `config.json` 中添加 `dashboard.logging` 配置:
|
|||
|
|
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"dashboard": {
|
|||
|
|
"port": 3800,
|
|||
|
|
"logging": {
|
|||
|
|
"enabled": true,
|
|||
|
|
"level": "INFO",
|
|||
|
|
"file": true,
|
|||
|
|
"console": true
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 配置项说明
|
|||
|
|
|
|||
|
|
| 配置项 | 类型 | 默认值 | 说明 |
|
|||
|
|
|--------|------|--------|------|
|
|||
|
|
| `enabled` | boolean | `true` | 是否启用日志系统 |
|
|||
|
|
| `level` | string | `"INFO"` | 日志级别,可选值:`DEBUG` / `INFO` / `WARN` / `ERROR` |
|
|||
|
|
| `file` | boolean | `true` | 是否写入日志文件 |
|
|||
|
|
| `console` | boolean | `true` | 是否输出到控制台 |
|
|||
|
|
|
|||
|
|
## 📊 日志级别说明
|
|||
|
|
|
|||
|
|
日志级别按优先级从低到高排列:
|
|||
|
|
|
|||
|
|
### DEBUG(调试)
|
|||
|
|
最详细的日志,包含所有运行细节:
|
|||
|
|
- 缓存命中情况
|
|||
|
|
- 组件加载详情
|
|||
|
|
- 详细的数据获取过程
|
|||
|
|
|
|||
|
|
**何时使用:** 开发调试时,需要查看详细运行过程
|
|||
|
|
|
|||
|
|
### INFO(信息)⭐ 默认
|
|||
|
|
一般信息日志,记录重要的运行状态:
|
|||
|
|
- API 请求记录
|
|||
|
|
- 数据加载完成
|
|||
|
|
- 配置更新
|
|||
|
|
- 监控数据返回
|
|||
|
|
|
|||
|
|
**何时使用:** 生产环境推荐,平衡详细度和性能
|
|||
|
|
|
|||
|
|
### WARN(警告)
|
|||
|
|
警告信息,需要关注但不影响运行:
|
|||
|
|
- 缓存获取失败(使用旧缓存)
|
|||
|
|
- Docker 状态获取失败
|
|||
|
|
- Gateway 健康检查失败
|
|||
|
|
|
|||
|
|
**何时使用:** 只关注潜在问题时
|
|||
|
|
|
|||
|
|
### ERROR(错误)
|
|||
|
|
错误信息,操作失败需要处理:
|
|||
|
|
- 配置文件加载失败
|
|||
|
|
- API 调用失败
|
|||
|
|
- 数据解析错误
|
|||
|
|
- 未捕获异常
|
|||
|
|
|
|||
|
|
**何时使用:** 只记录严重错误时
|
|||
|
|
|
|||
|
|
### 特殊级别
|
|||
|
|
|
|||
|
|
- **SUCCESS**:成功操作(与 INFO 同级)
|
|||
|
|
- **PERF**:性能监控(与 INFO 同级)
|
|||
|
|
|
|||
|
|
## 🎯 使用场景
|
|||
|
|
|
|||
|
|
### 场景 1:生产环境(推荐配置)
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"logging": {
|
|||
|
|
"enabled": true,
|
|||
|
|
"level": "INFO",
|
|||
|
|
"file": true,
|
|||
|
|
"console": true
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
**说明:** 记录重要信息,平衡性能和可观测性
|
|||
|
|
|
|||
|
|
### 场景 2:开发调试
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"logging": {
|
|||
|
|
"enabled": true,
|
|||
|
|
"level": "DEBUG",
|
|||
|
|
"file": true,
|
|||
|
|
"console": true
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
**说明:** 记录所有详细信息,方便排查问题
|
|||
|
|
|
|||
|
|
### 场景 3:性能优先
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"logging": {
|
|||
|
|
"enabled": true,
|
|||
|
|
"level": "WARN",
|
|||
|
|
"file": true,
|
|||
|
|
"console": false
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
**说明:** 只记录警告和错误,减少日志开销,控制台不输出
|
|||
|
|
|
|||
|
|
### 场景 4:只记录错误
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"logging": {
|
|||
|
|
"enabled": true,
|
|||
|
|
"level": "ERROR",
|
|||
|
|
"file": true,
|
|||
|
|
"console": true
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
**说明:** 只记录严重错误,最小化日志量
|
|||
|
|
|
|||
|
|
### 场景 5:完全关闭日志
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"logging": {
|
|||
|
|
"enabled": false,
|
|||
|
|
"level": "INFO",
|
|||
|
|
"file": false,
|
|||
|
|
"console": false
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
**说明:** 完全关闭日志(不推荐,排查问题会很困难)
|
|||
|
|
|
|||
|
|
### 场景 6:只输出到控制台
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"logging": {
|
|||
|
|
"enabled": true,
|
|||
|
|
"level": "INFO",
|
|||
|
|
"file": false,
|
|||
|
|
"console": true
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
**说明:** 不写入日志文件,节省磁盘空间
|
|||
|
|
|
|||
|
|
### 场景 7:只写入文件
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"logging": {
|
|||
|
|
"enabled": true,
|
|||
|
|
"level": "INFO",
|
|||
|
|
"file": true,
|
|||
|
|
"console": false
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
**说明:** 不在控制台输出,保持终端干净
|
|||
|
|
|
|||
|
|
## 📝 各级别输出内容对比
|
|||
|
|
|
|||
|
|
| 日志内容 | ERROR | WARN | INFO | DEBUG |
|
|||
|
|
|----------|-------|------|------|-------|
|
|||
|
|
| 严重错误 | ✅ | ✅ | ✅ | ✅ |
|
|||
|
|
| 警告信息 | ❌ | ✅ | ✅ | ✅ |
|
|||
|
|
| API 请求 | ❌ | ❌ | ✅ | ✅ |
|
|||
|
|
| 成功操作 | ❌ | ❌ | ✅ | ✅ |
|
|||
|
|
| 性能统计 | ❌ | ❌ | ✅ | ✅ |
|
|||
|
|
| 缓存命中 | ❌ | ❌ | ❌ | ✅ |
|
|||
|
|
| 详细调试 | ❌ | ❌ | ❌ | ✅ |
|
|||
|
|
|
|||
|
|
## 🔄 动态修改配置
|
|||
|
|
|
|||
|
|
修改 `config.json` 后,需要重启 Dashboard 才能生效:
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 停止服务
|
|||
|
|
./stop-dashboard.sh
|
|||
|
|
|
|||
|
|
# 修改 config.json
|
|||
|
|
vim config.json
|
|||
|
|
|
|||
|
|
# 重新启动
|
|||
|
|
./start-with-log.sh
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 💡 推荐配置
|
|||
|
|
|
|||
|
|
### 开发环境
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"logging": {
|
|||
|
|
"enabled": true,
|
|||
|
|
"level": "DEBUG",
|
|||
|
|
"file": true,
|
|||
|
|
"console": true
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 测试环境
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"logging": {
|
|||
|
|
"enabled": true,
|
|||
|
|
"level": "INFO",
|
|||
|
|
"file": true,
|
|||
|
|
"console": true
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 生产环境
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"logging": {
|
|||
|
|
"enabled": true,
|
|||
|
|
"level": "INFO",
|
|||
|
|
"file": true,
|
|||
|
|
"console": false
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 🔍 验证配置
|
|||
|
|
|
|||
|
|
启动 Dashboard 后,查看日志输出:
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 查看配置是否生效
|
|||
|
|
tail -20 logs/dashboard.log | grep "日志配置"
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
应该能看到类似输出:
|
|||
|
|
```
|
|||
|
|
[2026-03-11 10:30:15.180] ℹ️ [INFO] [配置] 日志配置已更新 | {"enabled":true,"level":"INFO","file":true,"console":true}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
如果没有配置 `logging` 项,会看到:
|
|||
|
|
```
|
|||
|
|
[2026-03-11 10:30:15.180] ℹ️ [INFO] [配置] 使用默认日志配置 | {"enabled":true,"level":"INFO","file":true,"console":true}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## ⚠️ 注意事项
|
|||
|
|
|
|||
|
|
1. **日志文件大小**
|
|||
|
|
- 日志会持续写入 `logs/dashboard.log`
|
|||
|
|
- 建议定期清理或使用日志轮转
|
|||
|
|
- 可以设置 `"file": false` 避免文件增长
|
|||
|
|
|
|||
|
|
2. **性能影响**
|
|||
|
|
- `DEBUG` 级别会产生大量日志,可能影响性能
|
|||
|
|
- 生产环境推荐使用 `INFO` 或 `WARN` 级别
|
|||
|
|
|
|||
|
|
3. **磁盘空间**
|
|||
|
|
- 启用文件日志会占用磁盘空间
|
|||
|
|
- 定期检查 `logs/` 目录大小
|
|||
|
|
|
|||
|
|
4. **日志敏感信息**
|
|||
|
|
- 日志中可能包含 IP 地址、请求路径等信息
|
|||
|
|
- 注意保护日志文件的访问权限
|
|||
|
|
|
|||
|
|
## 🛠️ 故障排查
|
|||
|
|
|
|||
|
|
### 问题 1:配置不生效
|
|||
|
|
**检查:**
|
|||
|
|
```bash
|
|||
|
|
# 1. 确认配置文件格式正确
|
|||
|
|
cat config.json | python -m json.tool
|
|||
|
|
|
|||
|
|
# 2. 重启服务
|
|||
|
|
./stop-dashboard.sh && ./start-with-log.sh
|
|||
|
|
|
|||
|
|
# 3. 查看启动日志
|
|||
|
|
tail -50 logs/dashboard.log
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 问题 2:日志文件不更新
|
|||
|
|
**检查:**
|
|||
|
|
```bash
|
|||
|
|
# 1. 确认 file 配置为 true
|
|||
|
|
grep -A 4 '"logging"' config.json
|
|||
|
|
|
|||
|
|
# 2. 检查文件权限
|
|||
|
|
ls -la logs/dashboard.log
|
|||
|
|
|
|||
|
|
# 3. 检查磁盘空间
|
|||
|
|
df -h .
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 问题 3:控制台无输出
|
|||
|
|
**检查:**
|
|||
|
|
```bash
|
|||
|
|
# 1. 确认 console 配置为 true
|
|||
|
|
grep -A 4 '"logging"' config.json
|
|||
|
|
|
|||
|
|
# 2. 确认 enabled 为 true
|
|||
|
|
grep "enabled" config.json
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 📚 相关文档
|
|||
|
|
|
|||
|
|
- `LOGGING_GUIDE.md` - 日志功能完整使用指南
|
|||
|
|
- `logs/README.md` - 日志文件说明
|
|||
|
|
- `monitor-logs.sh --help` - 监控工具帮助
|
|||
|
|
- `analyze-logs.sh` - 日志分析工具
|
|||
|
|
|
|||
|
|
## 🔗 配置模板
|
|||
|
|
|
|||
|
|
完整的配置文件模板(包含日志配置):
|
|||
|
|
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"github": {
|
|||
|
|
"owner": "your-github-username",
|
|||
|
|
"token": "ghp_xxx",
|
|||
|
|
"taskRepo": "your-github-username/ai-team-tasks"
|
|||
|
|
},
|
|||
|
|
"ai": {
|
|||
|
|
"apiKey": "sk-xxx",
|
|||
|
|
"provider": "coding-plan",
|
|||
|
|
"baseUrl": "https://coding.dashscope.aliyuncs.com/v1"
|
|||
|
|
},
|
|||
|
|
"bots": {
|
|||
|
|
"leader": {
|
|||
|
|
"codeRepo": "your-github-username/ai-team-leader-code",
|
|||
|
|
"skillsRepo": "your-github-username/ai-team-leader-skills"
|
|||
|
|
},
|
|||
|
|
"qianwen": {
|
|||
|
|
"codeRepo": "your-github-username/ai-team-fullstack-code",
|
|||
|
|
"skillsRepo": "your-github-username/ai-team-fullstack-skills"
|
|||
|
|
},
|
|||
|
|
"kimi": {
|
|||
|
|
"codeRepo": "your-github-username/ai-team-thinktank-code",
|
|||
|
|
"skillsRepo": "your-github-username/ai-team-thinktank-skills"
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
"feishu": {
|
|||
|
|
"enabled": true,
|
|||
|
|
"qianwen": {
|
|||
|
|
"appId": "cli_xxx",
|
|||
|
|
"appSecret": "xxx"
|
|||
|
|
},
|
|||
|
|
"kimi": {
|
|||
|
|
"appId": "cli_xxx",
|
|||
|
|
"appSecret": "xxx"
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
"pollInterval": 5,
|
|||
|
|
"dashboard": {
|
|||
|
|
"port": 3800,
|
|||
|
|
"logging": {
|
|||
|
|
"enabled": true,
|
|||
|
|
"level": "INFO",
|
|||
|
|
"file": true,
|
|||
|
|
"console": true
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
```
|