返回顶部
l

log-analyzer日志分析器

Parse, search, and analyze application logs across formats. Use when debugging from log files, setting up structured logging, analyzing error patterns, correlating events across services, parsing stack traces, or monitoring log output in real time.

作者: admin | 来源: ClawHub
源自
ClawHub
版本
V 1.0.0
安全检测
已通过
4,859
下载量
免费
免费
5
收藏
概述
安装方式
版本历史

log-analyzer

日志分析器

解析、搜索和调试应用程序日志。涵盖纯文本日志、结构化JSON日志、堆栈跟踪、多服务关联和实时监控。

使用场景

  • - 从日志文件中调试应用程序错误
  • 搜索日志中的特定模式、错误或请求ID
  • 解析和分析堆栈跟踪
  • 在应用程序中设置结构化日志记录(JSON)
  • 关联多个服务或日志文件中的事件
  • 开发期间实时监控日志
  • 生成错误频率报告或摘要

快速搜索模式

查找错误和异常

bash

日志文件中的所有错误


grep -i error\|exception\|fatal\|panic\|fail app.log

带3行上下文的错误

grep -i -C 3 error\|exception app.log

过去一小时内的错误(ISO时间戳)

HOUR_AGO=$(date -u -d 1 hour ago +%Y-%m-%dT%H:%M 2>/dev/null || date -u -v-1H +%Y-%m-%dT%H:%M) awk -v t=$HOUR_AGO $0 ~ /^[0-9]{4}-[0-9]{2}-[0-9]{2}T/ && $1 >= t app.log | grep -i error

按类型统计错误数量

grep -oP (?:Error|Exception): \K[^\n]+ app.log | sort | uniq -c | sort -rn | head -20

从访问日志中查找HTTP 5xx错误

awk $9 >= 500 access.log

按请求ID或关联ID搜索

bash

追踪单个请求在日志条目中的记录


grep req-abc123 app.log

跨多个文件搜索

grep -r req-abc123 /var/log/myapp/

跨多个服务搜索(带文件名前缀)

grep -rH correlation-id-xyz /var/log/service-a/ /var/log/service-b/ /var/log/service-c/

时间范围过滤

bash

在两个时间戳之间(ISO格式)


awk $0 >= 2026-02-03T10:00 && $0 <= 2026-02-03T11:00 app.log

最后N行(tail)

tail -1000 app.log | grep -i error

从特定时间开始(GNU date)

awk -v start=$(date -d 30 minutes ago +%Y-%m-%dT%H:%M) $1 >= start app.log

JSON / 结构化日志

使用jq解析

bash

美化打印JSON日志


cat app.log | jq .

按级别过滤

cat app.log | jq select(.level == error)

按时间范围过滤

cat app.log | jq select(.timestamp >= 2026-02-03T10:00:00Z)

提取特定字段

cat app.log | jq -r [.timestamp, .level, .message] | @tsv

按级别统计

cat app.log | jq -r .level | sort | uniq -c | sort -rn

按嵌套字段过滤

cat app.log | jq select(.context.userId == user-123)

按消息分组错误

cat app.log | jq -r select(.level == error) | .message | sort | uniq -c | sort -rn

提取请求持续时间统计

cat app.log | jq -r select(.duration != null) | .duration | awk {sum+=$1; count++; if($1>max)max=$1} END {print count=count, avg=sum/count, max=max}

解析混合格式日志(JSON行与纯文本混合)

bash

仅提取有效的JSON行


while IFS= read -r line; do
echo $line | jq . 2>/dev/null && continue
done < app.log

或者使用grep查找以{开头的行

grep ^\s*{ app.log | jq .

堆栈跟踪分析

提取和去重堆栈跟踪

bash

提取Java/Kotlin堆栈跟踪(以Exception/Error开头,后跟\t行)


awk /Exception|Error/{trace=$0; while(getline && /^\t/) trace=trace\n$0; print trace\n---} app.log

提取Python回溯

awk /^Traceback/{p=1} p{print} /^[A-Za-z].*Error/{if(p) print ---; p=0} app.log

提取Node.js堆栈跟踪(Error + 缩进的at行)

awk /Error:/{trace=$0; while(getline && /^ at /) trace=trace\n$0; print trace\n---} app.log

去重:按根因分组(跟踪的第一行)

awk /Exception|Error:/{cause=$0} /^\tat|^ at /{next} cause{print cause; cause=} app.log | sort | uniq -c | sort -rn

Python回溯解析器

python
#!/usr/bin/env python3
从日志文件中解析Python回溯并按根因分组。
import sys
import re
from collections import Counter

def extract_tracebacks(filepath):
tracebacks = []
current = []
in_trace = False

with open(filepath) as f:
for line in f:
if line.startswith(Traceback (most recent call last):):
in_trace = True
current = [line.rstrip()]
elif in_trace:
current.append(line.rstrip())
# 异常行结束回溯
if re.match(r^[A-Za-z]\w*(Error|Exception|Warning), line):
tracebacks.append(\n.join(current))
in_trace = False
current = []
return tracebacks

if name == main:
filepath = sys.argv[1] if len(sys.argv) > 1 else /dev/stdin
traces = extract_tracebacks(filepath)

# 按异常类型和消息分组
causes = Counter()
for trace in traces:
lines = trace.split(\n)
cause = lines[-1] if lines else Unknown
causes[cause] += 1

print(f找到 {len(traces)} 个回溯,{len(causes)} 个唯一原因:\n)
for cause, count in causes.most_common(20):
print(f {count:4d}x {cause})

实时监控

跟踪和过滤

bash

跟踪日志文件,用红色高亮错误


tail -f app.log | grep --color=always -i error\|warn\|$

跟踪并仅过滤错误

tail -f app.log | grep --line-buffered -i error\|exception

跟踪JSON日志,美化打印错误

tail -f app.log | while IFS= read -r line; do level=$(echo $line | jq -r .level // empty 2>/dev/null) if [ $level = error ] || [ $level = fatal ]; then echo $line | jq . fi done

跟踪多个文件

tail -f /var/log/service-a/app.log /var/log/service-b/app.log

带时间戳跟踪(当日志不包含时间戳时有用)

tail -f app.log | while IFS= read -r line; do echo $(date +%H:%M:%S) $line done

监控特定模式并告警

bash

错误时发出蜂鸣声(终端铃声)


tail -f app.log | grep --line-buffered -i error | while read line; do
echo -e \a$line
done

每分钟统计错误数

tail -f app.log | grep --line-buffered -i error | while read line; do echo $(date +%Y-%m-%d %H:%M) ERROR done | uniq -c

日志格式解析

常见访问日志(Apache/Nginx)

bash

解析字段:IP、日期、方法、路径、状态码、大小


awk {print $1, $9, $7} access.log

按请求数排名前20的IP

awk {print $1} access.log | sort | uniq -c | sort -rn | head -20

按请求数排名前20的路径

awk {print $7} access.log | sort | uniq -c | sort -rn | head -20

标签

skill ai

通过对话安装

该技能支持在以下平台通过对话安装:

OpenClaw WorkBuddy QClaw Kimi Claude

方式一:安装 SkillHub 和技能

帮我安装 SkillHub 和 log-analyzer-1776126379 技能

方式二:设置 SkillHub 为优先技能安装源

设置 SkillHub 为我的优先技能安装源,然后帮我安装 log-analyzer-1776126379 技能

通过命令行安装

skillhub install log-analyzer-1776126379

下载

⬇ 下载 log-analyzer v1.0.0(免费)

文件大小: 6.06 KB | 发布时间: 2026-4-14 13:11

v1.0.0 最新 2026-4-14 13:11
Initial release: Log parsing, error pattern analysis, stack trace extraction, JSON structured logging, real-time monitoring, multi-service correlation

Archiver·手机版·闲社网·闲社论坛·羊毛社区· 多链控股集团有限公司 · 苏ICP备2025199260号-1

Powered by Discuz! X5.0   © 2024-2025 闲社网·线报更新论坛·羊毛分享社区·http://xianshe.com

p2p_official_large
返回顶部