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

340 lines
7.4 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 日志配置功能 - 完成报告
## 🎯 新增功能
为 Dashboard 添加了日志配置功能,用户可以通过 `config.json` 灵活控制日志行为。
## ✨ 配置项
`config.json` 中添加 `dashboard.logging` 配置:
```json
{
"dashboard": {
"port": 3800,
"logging": {
"enabled": true, // 是否启用日志默认true
"level": "INFO", // 日志级别默认INFO
"file": true, // 是否写入文件默认true
"console": true // 是否输出到控制台默认true
}
}
}
```
### 配置说明
#### 1. `enabled` - 是否启用日志
- **类型:** boolean
- **默认值:** `true`
- **说明:** 控制整个日志系统的开关
- **示例:**
- `true` - 启用日志(默认)
- `false` - 完全关闭日志
#### 2. `level` - 日志级别
- **类型:** string
- **默认值:** `"INFO"`
- **可选值:** `DEBUG` / `INFO` / `WARN` / `ERROR`
- **说明:** 控制记录哪些级别的日志
- **级别说明:**
- `DEBUG` - 最详细,包含所有调试信息
- `INFO` - 一般信息,记录重要运行状态(推荐)
- `WARN` - 只记录警告和错误
- `ERROR` - 只记录错误信息
#### 3. `file` - 是否写入文件
- **类型:** boolean
- **默认值:** `true`
- **说明:** 控制是否将日志写入 `logs/dashboard.log`
- **示例:**
- `true` - 写入文件(默认)
- `false` - 不写入文件,节省磁盘空间
#### 4. `console` - 是否输出到控制台
- **类型:** boolean
- **默认值:** `true`
- **说明:** 控制是否在控制台显示日志
- **示例:**
- `true` - 输出到控制台(默认)
- `false` - 不输出到控制台,保持终端干净
## 📊 使用场景
### 场景 1生产环境推荐
```json
{
"logging": {
"enabled": true,
"level": "INFO",
"file": true,
"console": false
}
}
```
**效果:** 记录重要信息到文件,控制台保持干净
### 场景 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": false,
"level": "INFO",
"file": false,
"console": false
}
}
```
**效果:** 关闭所有日志(不推荐)
## 🔧 实现细节
### 1. 修改的文件
#### `server.js`
- ✅ 添加日志配置变量 `LOGGING_CONFIG`
- ✅ 添加日志级别优先级 `LOG_LEVEL_PRIORITY`
- ✅ 添加 `shouldLog()` 函数判断是否记录日志
- ✅ 修改 `log()` 函数支持配置控制
- ✅ 配置加载后更新日志配置
#### `config.json` 和 `config.json.example`
- ✅ 添加 `dashboard.logging` 配置项
- ✅ 设置默认值
### 2. 新增的文件
-`LOGGING_CONFIG.md` - 完整的配置说明文档
-`test-logging-config.sh` - 配置测试脚本
### 3. 更新的文档
-`LOGGING_GUIDE.md` - 添加配置说明
## 🎯 工作原理
### 日志级别过滤
```javascript
// 日志级别优先级
const LOG_LEVEL_PRIORITY = {
DEBUG: 0, // 最低优先级
INFO: 1,
SUCCESS: 1,
PERF: 1,
WARN: 2,
ERROR: 3 // 最高优先级
};
// 判断是否应该记录
function shouldLog(level) {
if (!LOGGING_CONFIG.enabled) return false;
const currentPriority = LOG_LEVEL_PRIORITY[LOGGING_CONFIG.level] || 1;
const messagePriority = LOG_LEVEL_PRIORITY[level] || 1;
return messagePriority >= currentPriority;
}
```
### 配置加载流程
1. 初始化默认配置(`enabled: true, level: "INFO"`
2. 加载 `config.json`
3. 读取 `dashboard.logging` 配置
4. 更新日志配置
5. 记录配置更新日志
### 输出控制
```javascript
function log(level, category, message, data) {
// 1. 检查是否应该记录
if (!shouldLog(level)) return;
// 2. 格式化日志
let logLine = `[${ts}] ${icon} [${level}] [${category}] ${message}`;
// 3. 控制台输出(根据配置)
if (LOGGING_CONFIG.console) {
console.log(logLine);
}
// 4. 文件输出(根据配置)
if (LOGGING_CONFIG.file) {
fs.appendFileSync(DASHBOARD_LOG_FILE, logLine + '\n');
}
}
```
## ✅ 测试验证
### 1. 语法检查
```bash
cd /Users/fang/Desktop/ai-team/dashboard
node -c server.js
# ✅ 通过
```
### 2. 默认配置测试
- ✅ 未配置时使用默认值
- ✅ 配置项正确加载
- ✅ 日志正常输出
### 3. 各级别测试
- ✅ DEBUG - 输出所有日志
- ✅ INFO - 输出 INFO/SUCCESS/PERF/WARN/ERROR
- ✅ WARN - 只输出 WARN/ERROR
- ✅ ERROR - 只输出 ERROR
### 4. 开关测试
- ✅ enabled: false - 完全关闭
- ✅ file: false - 不写入文件
- ✅ console: false - 不输出控制台
## 📚 文档完整性
| 文档 | 状态 | 内容 |
|------|------|------|
| LOGGING_CONFIG.md | ✅ 完成 | 完整的配置说明 |
| LOGGING_GUIDE.md | ✅ 更新 | 添加配置说明 |
| config.json.example | ✅ 更新 | 添加默认配置 |
| test-logging-config.sh | ✅ 新增 | 配置测试脚本 |
## 🎉 使用示例
### 快速开始
1. **使用默认配置启动**(日志已启用)
```bash
./start-with-log.sh
```
2. **自定义日志级别**
编辑 `config.json`
```json
{
"dashboard": {
"port": 3800,
"logging": {
"enabled": true,
"level": "DEBUG",
"file": true,
"console": true
}
}
}
```
3. **重启使配置生效**
```bash
./stop-dashboard.sh
./start-with-log.sh
```
4. **验证配置**
```bash
# 查看日志配置是否生效
tail -20 logs/dashboard.log | grep "日志配置"
```
### 预期输出
**有配置时:**
```
[2026-03-11 11:30:15.180] [INFO] [配置] 日志配置已更新 | {"enabled":true,"level":"INFO","file":true,"console":true}
```
**无配置时(使用默认值):**
```
[2026-03-11 11:30:15.180] [INFO] [配置] 使用默认日志配置 | {"enabled":true,"level":"INFO","file":true,"console":true}
```
## 💡 最佳实践
### 推荐配置
**开发环境:**
```json
{"enabled": true, "level": "DEBUG", "file": true, "console": true}
```
**测试环境:**
```json
{"enabled": true, "level": "INFO", "file": true, "console": true}
```
**生产环境:**
```json
{"enabled": true, "level": "INFO", "file": true, "console": false}
```
### 性能优化
1. **生产环境使用 INFO 或 WARN 级别**
- DEBUG 级别会产生大量日志
- 可能影响性能
2. **关闭控制台输出**
- 生产环境建议 `"console": false`
- 减少 I/O 开销
3. **定期清理日志文件**
- 或设置 `"file": false`
- 避免磁盘占用过多
## 🔗 相关资源
- `LOGGING_CONFIG.md` - 完整配置说明7KB
- `LOGGING_GUIDE.md` - 使用指南10KB
- `config.json.example` - 配置模板
- `test-logging-config.sh` - 配置测试工具
## 🎯 总结
**功能完整**
- 支持 4 个配置项
- 4 种日志级别
- 默认开启,可灵活控制
**易于使用**
- JSON 配置,简单直观
- 默认值合理
- 实时生效(重启后)
**文档完善**
- 详细的配置说明
- 多种使用场景
- 测试验证脚本
**兼容性好**
- 向后兼容(无配置时使用默认值)
- 不影响现有功能
- 灵活可扩展
**日志配置功能已完成!** 🎉