在 CentOS 上“过滤 Golang 日志”通常分几种场景,下面按最常用 → 进阶给你一套可落地的做法。
tail -f /var/log/your_app.log | grep "ERROR"
grep -E "ERROR|PANIC|FATAL" /var/log/your_app.log
grep -v "healthcheck" /var/log/your_app.log
grep "2026-01-21 10:" /var/log/your_app.log
log + 级别控制var debug = false
func logDebug(msg string) {
if debug {
log.Println("[DEBUG]", msg)
}
}
logger, _ := zap.NewProduction()
defer logger.Sync()
logger.Info("server started", zap.String("host", "0.0.0.0"))
logger.Error("db connect failed", zap.Error(err))
按级别过滤:
grep "\"level\":\"error\"" app.log
grep "level=error" app.log
如果你的 Golang 程序是用 systemd 启动的:
journalctl -u your_app.service -f
journalctl -u your_app.service | grep ERROR
按时间:
journalctl -u your_app.service --since "2026-01-21 10:00"
cat app.log | jq 'select(.level=="error")'
示例日志:
{"level":"error","msg":"db timeout","ts":1705812345}
适合:
✅ 日志一定要带 时间 + 级别
✅ 不要全打 fmt.Println
❌ 不要在生产开 DEBUG
✅ 用 log.SetOutput 或日志库控制输出文件
如果你能告诉我:
我可以直接给你一条精准命令或代码。