Analyze project log files. Supports reading logs/ (full), logs/warning/ (warnings), and logs/critical/ (errors) directories. Features: statistical analysis, error tracing, pattern recognition, time-range filtering, and context filtering. Keywords: log, logs, error, warning, critical, analyze, analysis, statistics.
分析專案的 log 檔案,提供統計摘要、錯誤追蹤和模式識別。
logs/
├── YYYY-MM-DD.log # 完整日誌(所有 level)
├── warning/
│ └── YYYY-MM-DD.log # 警告日誌(warn only)
└── critical/
└── YYYY-MM-DD.log # 嚴重錯誤(error, fatal)
每行 log 是一個 JSON 物件:
{"level":"error","time":"2026-01-25T14:58:12.929Z","pid":34183,"hostname":"Mac.lan","context":"trading","msg":"Order failed"}
欄位說明:
level: trace, debug, info, warn, error, fataltime: ISO 8601 時間戳context: 日誌來源(trading, exchange, websocket, database 等)msg: 日誌訊息# 檢視今日 critical logs
cat logs/critical/$(date +%Y-%m-%d).log | jq -r '.msg' | sort | uniq -c | sort -rn
# 檢視今日 warning logs
cat logs/warning/$(date +%Y-%m-%d).log | jq -r '.msg' | sort | uniq -c | sort -rn
# 過濾特定 context 的錯誤
cat logs/critical/$(date +%Y-%m-%d).log | jq -r 'select(.context == "trading")'
# 統計各 context 的錯誤數量
cat logs/critical/$(date +%Y-%m-%d).log | jq -r '.context' | sort | uniq -c | sort -rn
# 過濾最近 1 小時的 log
cat logs/$(date +%Y-%m-%d).log | jq -r --arg since "$(date -v-1H +%Y-%m-%dT%H:%M:%S)" 'select(.time > $since)'
# 顯示完整錯誤資訊(含 stack trace)
cat logs/critical/$(date +%Y-%m-%d).log | jq '.'
# 顯示最近 10 筆錯誤
tail -10 logs/critical/$(date +%Y-%m-%d).log | jq '.'
當使用者要求分析 log 時,依以下步驟執行:
詢問或推斷:
根據分析範圍選擇適當的 log 目錄:
| 需求 | 目錄 |
|:-----|:-----|
| 完整分析 | logs/YYYY-MM-DD.log |
| 只看警告 | logs/warning/YYYY-MM-DD.log |
| 只看錯誤 | logs/critical/YYYY-MM-DD.log |
使用 Bash 工具執行分析命令:
# 統計 log 總數
wc -l logs/$(date +%Y-%m-%d).log
# 統計各 level 數量
cat logs/$(date +%Y-%m-%d).log | jq -r '.level' | sort | uniq -c
# 統計各 context 數量
cat logs/$(date +%Y-%m-%d).log | jq -r '.context' | sort | uniq -c | sort -rn
# 錯誤訊息分類
cat logs/critical/$(date +%Y-%m-%d).log | jq -r '.msg' | sort | uniq -c | sort -rn | head -20
提供結構化的分析報告,包含:
摘要統計
錯誤分析(如有)
警告分析(如有)
建議
echo "=== 今日錯誤統計 ==="
echo "錯誤總數: $(wc -l < logs/critical/$(date +%Y-%m-%d).log 2>/dev/null || echo 0)"
echo ""
echo "=== 依 Context 分類 ==="
cat logs/critical/$(date +%Y-%m-%d).log 2>/dev/null | jq -r '.context' | sort | uniq -c | sort -rn
echo ""
echo "=== 錯誤訊息統計 ==="
cat logs/critical/$(date +%Y-%m-%d).log 2>/dev/null | jq -r '.msg' | sort | uniq -c | sort -rn | head -10
echo "=== Trading Context 錯誤 ==="
cat logs/critical/$(date +%Y-%m-%d).log 2>/dev/null | jq 'select(.context == "trading")' | jq -r '.msg' | sort | uniq -c | sort -rn
echo "=== WebSocket 相關 Log ==="
cat logs/$(date +%Y-%m-%d).log 2>/dev/null | jq 'select(.context == "websocket")' | jq -r '[.level, .msg] | @tsv' | sort | uniq -c | sort -rn
echo "=== 最近 5 筆錯誤 ==="
tail -5 logs/critical/$(date +%Y-%m-%d).log 2>/dev/null | jq '.'
head、tail 限制輸出jq 解析,確保系統已安裝YYYY-MM-DD.logSearch for places (restaurants, cafes, etc.) via Google Places API proxy on localhost.
Interact with GitHub using the `gh` CLI. Use `gh issue`, `gh pr`, `gh run`, and `gh api` for issues, PRs, CI runs, and advanced queries.
Create or update AgentSkills. Use when designing, structuring, or packaging skills with scripts, references, and assets.
Start voice calls via the OpenClaw voice-call plugin.
Notion API for creating and managing pages, databases, and blocks.
Gemini CLI for one-shot Q&A, summaries, and generation.
Category:developer