在 Debian 系统上查看 Go 应用的日志,取决于日志是写到哪里的。下面按常见场景给你一个完整说明。
如果 Go 程序是通过 systemd 启动的服务(如 /etc/systemd/system/xxx.service),日志通常由 journald 管理。
sudo journalctl -u 服务名 -f
例如:
sudo journalctl -u mygoapp -f
sudo journalctl -u 服务名 --since today
sudo journalctl -u 服务名 --since "2025-01-01 10:00" --until "2025-01-01 12:00"
sudo journalctl -u 服务名 -o verbose
如果 Go 程序不是 systemd 服务,而是直接运行:
./mygoapp
日志通常会输出到:
./mygoapp > app.log 2>&1
查看日志:
tail -f app.log
很多 Go 程序会自己写日志文件,例如:
log.Println("start server")
或通过日志库(zap / logrus / slog)写入:
常见路径:
/var/log/myapp.log
/var/log/myapp/
$HOME/logs/
./logs/
查看方式:
tail -f /var/log/myapp.log
如果 Go 程序使用 syslog 或 log/syslog:
sudo tail -f /var/log/syslog
或(旧系统):
sudo tail -f /var/log/messages
如果是 Docker 容器:
docker logs 容器名
docker logs -f 容器名
ps aux | grep mygoapp
如果你用的是:
fmt.Println → 输出到 stdoutlog.Println → 输出到 stderrslog.Info → 默认 stderrstrace -e write -p 进程PID
✅ 使用 systemd + journald
✅ 或使用日志库写入 /var/log/
✅ 不要只依赖 fmt.Println
你可以告诉我:
我可以给你精确到命令级别的排查方案。