在 Debian 系统中查看 Golang(Go)程序日志,常见做法取决于日志写到了哪里。下面按常见场景给你一个完整指南。
log 或日志框架输出到 stdout/stderrgo run main.go
日志会直接输出到终端。
如果 Go 程序是通过 systemd 管理的:
sudo systemctl status your-service
查看日志:
journalctl -u your-service
实时查看:
journalctl -u your-service -f
指定时间:
journalctl -u your-service --since "2024-01-01" --until "2024-01-02"
nohup ./app > app.log 2>&1 &
查看日志:
tail -f app.log
如果 Go 程序里手动写日志文件,比如:
log.SetOutput(os.OpenFile("app.log", os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644))
cat app.log
less app.log
tail -f app.log
logruslogrus.SetOutput(os.Stdout)
或
logrus.SetOutput(file)
查看方式同上(stdout 或文件)
zaplogger, _ := zap.NewProduction()
defer logger.Sync()
生产环境通常输出到:
如果 Go 程序崩溃或异常退出:
journalctl -xe
或:
dmesg | tail
docker logs 容器名
docker logs -f 容器名
你可以按这个顺序查:
journalctl -u 服务名ps aux | grep 程序名ls /var/log/.log 文件strace -p PID(高级)你可以告诉我:
我可以直接给你精准命令。