远程查看 Debian 上 Golang 程序的日志,常见做法分为 “日志文件 + 远程访问” 和 “日志服务/平台” 两类。下面按实用程度给你几种方案。
如果你的 Golang 程序把日志写到文件(如 /var/log/myapp.log):
ssh user@debian-ip
tail -f /var/log/myapp.log
实时查看:
tail -f /var/log/myapp.log
搜索错误:
grep ERROR /var/log/myapp.log
ssh user@debian-ip "tail -f /var/log/myapp.log"
如果 Golang 程序是用 systemd 管理的:
ssh user@debian-ip
journalctl -u myapp.service -f
查看最近 100 行:
journalctl -u myapp.service -n 100
按时间:
journalctl -u myapp.service --since "10 min ago"
✅ 优点:
journalctl在程序里加:
http.HandleFunc("/logs", func(w http.ResponseWriter, r *http.Request) {
http.ServeFile(w, r, "/var/log/myapp.log")
})
然后浏览器访问:
http://debian-ip:8080/logs
⚠️ 注意权限和安全(最好加 token)
rsync -az user@debian-ip:/var/log/myapp.log ./
Golang 日志建议用 zap / logrus,输出 JSON,方便采集。
logger, _ := zap.NewProduction()
defer logger.Sync()
logger.Info("server start",
zap.String("host", "0.0.0.0"),
zap.Int("port", 8080),
)
输出到:
| 场景 | 推荐方式 |
|---|---|
| 个人/测试 | ssh + tail -f |
| systemd 服务 | journalctl -u |
| 多台服务器 | Loki / ELK |
| 不想开 SSH | HTTP 日志接口 |
如果你愿意,可以告诉我:
我可以直接给你一套可复制的配置。