在 Debian 上查看 Golang 程序日志,取决于你的程序把日志输出到哪里。下面按常见情况说明,基本都能覆盖 90% 场景。
如果你是这样启动的:
./myapp
或 systemd 服务里没有重定向日志,那日志通常输出到:
直接在终端里看即可。
./myapp > app.log 2>&1 &
查看:
tail -f app.log
sudo journalctl -u your-service-name
实时查看:
sudo journalctl -u your-service-name -f
只看最近 100 行:
sudo journalctl -u your-service-name -n 100
systemctl list-units --type=service
如果代码里类似这样:
logFile, _ := os.OpenFile("/var/log/myapp.log", os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0644)
log.SetOutput(logFile)
查看方式:
tail -f /var/log/myapp.log
或:
less /var/log/myapp.log
✅ 优先看 systemd 日志
journalctl -u your-service-name
✅ 如果配置了文件路径:
tail -f /path/to/log.json
docker logs 容器名
实时:
docker logs -f 容器名
# 查看程序是否在运行
ps aux | grep myapp
# 查看程序打开了哪些文件
lsof -p PID
# 查看程序输出到哪里
strace -e write -p PID
systemctl cat your-service-name
重点看:
ExecStart=...
StandardOutput=
StandardError=
如果没有重定向,日志就在 journalctl。
✅ 生产环境
✅ 日志切割
sudo apt install logrotate
如果你愿意,可以把下面信息发我,我可以直接告诉你日志在哪: