在 CentOS 上解析 Golang 产生的日志,常见做法取决于你的 日志格式 和 使用场景。下面按常见情况给你一套实用方案。
Golang 日志常见格式有:
2024/01/12 10:22:33 something happened
logruszapslog示例(JSON):
{"time":"2024-01-12T10:22:33Z","level":"info","msg":"request","path":"/api"}
tail -f /var/log/app.log
less /var/log/app.log
grep "ERROR" /var/log/app.log
jq 解析(最简单)cat app.log | jq '.'
过滤示例:
jq 'select(.level=="error")' app.log
安装 jq(CentOS):
yum install -y jq
grep + awk(非 JSON)awk '{print $1, $2, $4}' app.log
在 CentOS 7+:
journalctl -u your-app.service -f
解析:
journalctl -u your-app.service | jq .
Golang 日志写入:
/var/log/myapp.log
rsyslog 示例:
*.* /var/log/myapp.log
/var/log/*.logpromtail -> loki -> grafana
适合 Kubernetes / 云原生
✅ 推荐结构化日志(Zap 示例):
logger, _ := zap.NewProduction()
logger.Info("request",
zap.String("path", "/api"),
zap.Int("code", 200),
)
| 场景 | 推荐方式 |
|---|---|
| 本地调试 | tail / less |
| JSON 日志 | jq |
| 生产环境 | journald / ELK / Loki |
| 无格式日志 | awk / grep |
如果你能贴一段 具体 Golang 日志样例,我可以直接帮你写 解析命令或脚本。