Files
ai-team-dashboard/dashboard/monitor-logs.sh
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

150 lines
4.4 KiB
Bash
Executable File
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.
#!/bin/bash
# AI Team Dashboard 实时日志监控工具
# 使用方法:./monitor-logs.sh [选项]
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
LOG_FILE="$SCRIPT_DIR/logs/dashboard.log"
# 颜色定义
COLOR_RESET='\033[0m'
COLOR_INFO='\033[36m' # 青色
COLOR_SUCCESS='\033[32m' # 绿色
COLOR_WARN='\033[33m' # 黄色
COLOR_ERROR='\033[31m' # 红色
COLOR_DEBUG='\033[90m' # 灰色
COLOR_PERF='\033[35m' # 紫色
# 检查日志文件
if [ ! -f "$LOG_FILE" ]; then
echo -e "${COLOR_ERROR}❌ 日志文件不存在: $LOG_FILE${COLOR_RESET}"
echo ""
echo "请先启动 Dashboard"
echo " ./start-with-log.sh"
exit 1
fi
# 解析参数
FILTER=""
FOLLOW=true
LINES=50
while [[ $# -gt 0 ]]; do
case $1 in
--api)
FILTER="API"
shift
;;
--perf)
FILTER="PERF"
shift
;;
--error)
FILTER="ERROR|WARN"
shift
;;
--github)
FILTER="GitHub"
shift
;;
--docker)
FILTER="Docker"
shift
;;
--system)
FILTER="系统"
shift
;;
--config)
FILTER="配置"
shift
;;
--no-follow)
FOLLOW=false
shift
;;
-n)
LINES="$2"
shift 2
;;
-h|--help)
echo "AI Team Dashboard 实时日志监控工具"
echo ""
echo "用法: $0 [选项]"
echo ""
echo "选项:"
echo " --api 只显示 API 请求日志"
echo " --perf 只显示性能日志"
echo " --error 只显示错误和警告"
echo " --github 只显示 GitHub 相关日志"
echo " --docker 只显示 Docker 相关日志"
echo " --system 只显示系统日志"
echo " --config 只显示配置日志"
echo " --no-follow 不实时跟踪,只显示历史日志"
echo " -n <数字> 显示最近 N 行日志(默认 50"
echo " -h, --help 显示此帮助信息"
echo ""
echo "示例:"
echo " $0 # 实时查看所有日志"
echo " $0 --api # 实时查看 API 请求"
echo " $0 --perf # 实时查看性能统计"
echo " $0 --error # 实时查看错误和警告"
echo " $0 --api --no-follow # 查看最近 50 条 API 日志"
echo " $0 -n 100 # 查看最近 100 行日志"
exit 0
;;
*)
echo -e "${COLOR_ERROR}未知选项: $1${COLOR_RESET}"
echo "使用 -h 或 --help 查看帮助"
exit 1
;;
esac
done
# 显示标题
clear
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo "🦞 AI Team Dashboard 日志监控"
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo "📁 日志文件: $LOG_FILE"
if [ -n "$FILTER" ]; then
echo "🔍 过滤条件: $FILTER"
fi
if [ "$FOLLOW" = true ]; then
echo "📡 模式: 实时跟踪"
else
echo "📋 模式: 历史查看(最近 $LINES 行)"
fi
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo ""
# 统计信息
if [ "$FOLLOW" = false ]; then
TOTAL_LINES=$(wc -l < "$LOG_FILE")
echo "📊 日志统计:"
echo " 总行数: $TOTAL_LINES"
echo " INFO: $(grep -c '\[INFO\]' "$LOG_FILE" || echo 0)"
echo " ✅ SUCCESS: $(grep -c '\[SUCCESS\]' "$LOG_FILE" || echo 0)"
echo " ⚠️ WARN: $(grep -c '\[WARN\]' "$LOG_FILE" || echo 0)"
echo " ❌ ERROR: $(grep -c '\[ERROR\]' "$LOG_FILE" || echo 0)"
echo " ⏱️ PERF: $(grep -c '\[PERF\]' "$LOG_FILE" || echo 0)"
echo ""
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo ""
fi
# 查看日志
if [ "$FOLLOW" = true ]; then
if [ -n "$FILTER" ]; then
tail -f "$LOG_FILE" | grep --line-buffered -E "$FILTER"
else
tail -f "$LOG_FILE"
fi
else
if [ -n "$FILTER" ]; then
tail -"$LINES" "$LOG_FILE" | grep -E "$FILTER"
else
tail -"$LINES" "$LOG_FILE"
fi
fi