在 Debian 上查看 Golang(Go)程序日志,取决于这个 Go 程序是怎么运行的。下面按常见场景给你一个完整的排查指南。
比如:
go run main.go
# 或
./myapp
✅ 日志直接输出在 终端(stdout / stderr)
➡️ 只能在当前终端查看
➡️ 关闭终端后就没了
很多 Debian 上运行的 Go 程序是以 systemd 方式启动的。
sudo journalctl -u 服务名 -f
例如:
sudo journalctl -u mygoapp -f
常用参数:
-u 服务名 # 指定服务
-f # 实时跟踪
-n 100 # 最近 100 行
--since today # 今天
比如代码里有:
log.SetOutput(os.OpenFile("/var/log/myapp.log", ...))
cat /var/log/myapp.log
tail -f /var/log/myapp.log
less /var/log/myapp.log
常见路径:
/var/log/
/tmp/
当前程序目录
/var/log/syslog
/var/log/messages
查看:
tail -f /var/log/syslog
✅ 正常情况 systemd 会自动捕获 stdout/stderr
如果没看到:
sudo journalctl -u 服务名
Go 的 log 默认是行缓冲,但 fmt.Println 可能延迟。
✅ 建议:
log.SetFlags(log.LstdFlags | log.Lshortfile)
systemctl status 服务名
systemctl status mygoapp
sudo journalctl -u mygoapp -n 100
ls /var/log | grep go
你可以直接贴出:
log.Printlnfmt.Printlnzap / logrus?cat /etc/debian_version
我可以一步一步帮你定位 ✅