✨ 新增功能 - 完整的日志记录系统(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
150 lines
4.4 KiB
Bash
Executable File
150 lines
4.4 KiB
Bash
Executable File
#!/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
|