在 Debian 系统上排查 Golang(Go 程序)日志,没有一个“唯一位置”,具体要看 程序是怎么跑的、日志往哪写。下面按 最常见场景 给你一个快速定位指南。
Go 程序日志通常来自以下几类:
程序自己写日志
log.Println / log.Fatalffmt.Println写文件
/var/log/xxx.log./app.log输出到 stdout / stderr
如果你是用 systemd 启动的服务(最常见):
journalctl -u 服务名
例如:
journalctl -u mygoapp
journalctl -u mygoapp -f # 实时
journalctl -u mygoapp --since "5 min ago"
✅ Go 程序 stdout / stderr 都会在这里
systemctl cat mygoapp
关注:
ExecStart=/usr/local/bin/mygoapp
StandardOutput=journal
StandardError=journal
./mygoapp
日志直接输出在终端。
nohup ./mygoapp > app.log 2>&1 &
日志在:
app.log
/var/log/
常见文件:
/var/log/syslog
/var/log/messages
查看:
grep mygoapp /var/log/syslog
如果是 HTTP 服务,可能日志在:
/var/log/nginx/
/var/log/apache2/
docker logs 容器名
docker logs -f 容器名
✅ Go 的 stdout/stderr 会直接在这里
log.SetOutput(os.Stdout)
log.SetOutput(&lumberjack.Logger{
Filename: "/var/log/myapp.log",
})
你可以直接搜代码:
grep -R "log.SetOutput" .
grep -R "/var/log" .
✅ 90% 情况按这个来:
确认是不是 systemd 服务
systemctl list-units | grep mygo
看 journalctl
journalctl -u 服务名 -f
看程序是否写文件
ls /var/log | grep go
看进程启动参数
ps aux | grep mygo
你可以直接贴:
我可以 一步一步帮你找到日志文件。