150 lines
4.4 KiB
Bash
150 lines
4.4 KiB
Bash
|
|
#!/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
|