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

7.4 KiB
Raw Blame History

Dashboard 日志配置功能 - 完成报告

🎯 新增功能

为 Dashboard 添加了日志配置功能,用户可以通过 config.json 灵活控制日志行为。

配置项

config.json 中添加 dashboard.logging 配置:

{
  "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生产环境推荐

{
  "logging": {
    "enabled": true,
    "level": "INFO",
    "file": true,
    "console": false
  }
}

效果: 记录重要信息到文件,控制台保持干净

场景 2开发调试

{
  "logging": {
    "enabled": true,
    "level": "DEBUG",
    "file": true,
    "console": true
  }
}

效果: 记录所有详细信息,方便排查问题

场景 3性能优先

{
  "logging": {
    "enabled": true,
    "level": "WARN",
    "file": true,
    "console": false
  }
}

效果: 只记录警告和错误,最小化日志开销

场景 4完全关闭

{
  "logging": {
    "enabled": false,
    "level": "INFO",
    "file": false,
    "console": false
  }
}

效果: 关闭所有日志(不推荐)

🔧 实现细节

1. 修改的文件

server.js

  • 添加日志配置变量 LOGGING_CONFIG
  • 添加日志级别优先级 LOG_LEVEL_PRIORITY
  • 添加 shouldLog() 函数判断是否记录日志
  • 修改 log() 函数支持配置控制
  • 配置加载后更新日志配置

config.jsonconfig.json.example

  • 添加 dashboard.logging 配置项
  • 设置默认值

2. 新增的文件

  • LOGGING_CONFIG.md - 完整的配置说明文档
  • test-logging-config.sh - 配置测试脚本

3. 更新的文档

  • LOGGING_GUIDE.md - 添加配置说明

🎯 工作原理

日志级别过滤

// 日志级别优先级
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. 记录配置更新日志

输出控制

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. 语法检查

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. 使用默认配置启动(日志已启用)
./start-with-log.sh
  1. 自定义日志级别 编辑 config.json
{
  "dashboard": {
    "port": 3800,
    "logging": {
      "enabled": true,
      "level": "DEBUG",
      "file": true,
      "console": true
    }
  }
}
  1. 重启使配置生效
./stop-dashboard.sh
./start-with-log.sh
  1. 验证配置
# 查看日志配置是否生效
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}

💡 最佳实践

推荐配置

开发环境:

{"enabled": true, "level": "DEBUG", "file": true, "console": true}

测试环境:

{"enabled": true, "level": "INFO", "file": true, "console": true}

生产环境:

{"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 配置,简单直观
  • 默认值合理
  • 实时生效(重启后)

文档完善

  • 详细的配置说明
  • 多种使用场景
  • 测试验证脚本

兼容性好

  • 向后兼容(无配置时使用默认值)
  • 不影响现有功能
  • 灵活可扩展

日志配置功能已完成! 🎉