在 Debian 系统上,Golang 程序本身不会自动把日志写到某个固定位置,日志存哪里完全取决于你的程序怎么写、以及怎么启动它。
下面分几种常见情况说明:
如果你在代码里这样写:
log.SetOutput(os.OpenFile("/var/log/myapp.log", os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0644))
那日志就在:
/var/log/myapp.log
(路径是你自己指定的)
很多 Go 程序只是:
log.Println("hello")
fmt.Println("xxx")
这种日志不会自动存文件,而是输出到:
systemctl status your-service
journalctl -u your-service
journalctl -u your-service -f
日志实际由 systemd-journald 管理,默认在:
/var/log/journal/
(二进制格式,不能直接 cat)
启动脚本常见写法:
./mygoapp >> /var/log/myapp.log 2>&1
日志就在:
/var/log/myapp.log
日志默认在:
docker logs 容器名
实际位置:
/var/lib/docker/containers/...
如 zap / logrus / slog:
logger, _ := zap.NewProduction()
通常会写到:
filename# 看你程序是怎么跑的
ps aux | grep 你的程序名
# 看是不是 systemd
systemctl list-units | grep 你的程序
# 看文件日志
ls -lh /var/log | grep 你的程序
如果你愿意,可以把:
发出来,我可以精确告诉你日志在哪。