Files
ai-team-dashboard/dashboard/monitor-logs.sh

150 lines
4.4 KiB
Bash
Raw Normal View History

#!/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