在 CentOS 上“过滤 Golang 日志”通常分几种场景,下面按常见情况给你说明。
app.log)tail -f app.log | grep "ERROR"
过滤多个关键字(OR):
tail -f app.log | grep -E "ERROR|PANIC|FATAL"
排除某些日志(NOT):
tail -f app.log | grep -v "healthcheck"
按时间过滤(如今天):
grep "2026-01-15" app.log | grep "ERROR"
如果 Golang 用 logrus / zap 输出 JSON:
tail -f app.log | jq 'select(.level=="error")'
只看某字段:
tail -f app.log | jq '.msg'
如果你的 Golang 程序是用 systemd 启动的:
journalctl -u your-service -f
过滤 ERROR:
journalctl -u your-service | grep ERROR
按时间:
journalctl -u your-service --since "2026-01-15 10:00"
log.SetLevel(log.WarnLevel) // 只输出 warn/error
logger, _ := zap.NewProduction()
logger.Error("something error")
如果是服务器集群:
过滤示例(Loki):
{job="go-app"} | json | level="error"
grep 可能看不到 → 用 grep --line-bufferedfmt.Println 打日志如果你能补充:
我可以给你更精确的命令。