在 CentOS 上分析 Golang 日志,通常可以从 日志文件查看、文本分析、结构化日志处理、可视化 几个层面来做。下面按常见使用场景给你一套实用方案。
常见情况:
直接输出到 stdout/stderr
ps -ef | grep your_app
通常配合 systemd 或 nohup:
journalctl -u your_app.service
写入日志文件
ls -lh /var/log/your_app/
tail -f /var/log/your_app/app.log
tail -n 500 /var/log/your_app/app.log
grep -n "ERROR" /var/log/your_app/app.log
grep -n "panic" /var/log/your_app/app.log
sed -n '/2026-01-21 10:00/,/2026-01-21 11:00/p' app.log
logrus / zap / slog示例(JSON):
{"level":"error","ts":"2026-01-21T10:12:01Z","msg":"db timeout"}
jq 分析(CentOS 需安装)yum install jq -y
统计 ERROR 数量:
cat app.log | jq 'select(.level=="error")' | wc -l
按小时统计错误:
cat app.log | jq -r '.ts' | cut -c1-13 | sort | uniq -c
grep -A 20 "panic" app.log
假设日志中有:
GET /api/user 200 12ms
grep "GET" app.log | awk '{print $2}' | sort | uniq -c | sort -nr | head
grep "ms" app.log | awk '$NF>500{print}'
journalctl -u your_app -f
journalctl -u your_app --since "2026-01-21 10:00"
journalctl -u your_app -p err
zap 或 slogdate
timedatectl
ls /var/log/your_app*
如果你愿意,可以告诉我:
我可以直接给你 针对性的命令或脚本。