在 Linux 上抓取 Golang 程序日志,常见做法取决于日志写在哪里。下面按场景给你一套实用方案。
tail -f /var/log/myapp.log
tail -f /var/log/myapp.log | grep ERROR
grep "2026-01-15 10:" /var/log/myapp.log
./myapp > app.log 2>&1 &
tail -f app.log
journalctl -u myapp.service -f
只看错误:
journalctl -u myapp.service -p err -f
log.SetOutput(os.Stdout)
log.Println("server started")
logger, _ := zap.NewProduction()
defer logger.Sync()
logger.Info("start server",
zap.String("addr", ":8080"),
)
日志可输出到:
docker logs -f container_id
kubectl logs -f pod-name
journalctl -u myapp | grep -A 20 "panic"
/etc/logrotate.d/myapp
/var/log/myapp.log {
daily
rotate 7
compress
missingok
notifempty
}
✅ 先看日志在哪
✅ 是否输出到 stdout
✅ 是否有 panic 未捕获
✅ 是否权限不足写不了文件
如果你愿意,可以告诉我:
我可以直接给你对应的抓取命令或配置。