在 Debian 上“导 Golang 日志”通常有几个常见场景,我先按最常见的情况给你说明,你看看符合哪一个,再决定用哪种方式。
如果你的 Golang 程序是这样运行的:
./myapp
可以直接把日志导出到文件:
./myapp > /var/log/myapp.log 2>&1
>:标准输出2>&1:错误输出也写入/var/log/如果你用 systemd 管理 Golang 服务:
sudo nano /etc/systemd/system/myapp.service
示例:
[Unit]
Description=Golang App
After=network.target
[Service]
ExecStart=/usr/local/bin/myapp
WorkingDirectory=/opt/myapp
User=www-data
Restart=always
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl start myapp
sudo systemctl enable myapp
journalctl -u myapp
实时查看:
journalctl -u myapp -f
导出日志:
journalctl -u myapp > myapp.log
✅ 这是 Debian 上最标准、最推荐的方式
如果你的程序里用的是 log 包:
log.SetOutput(os.OpenFile("/var/log/myapp.log", os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644))
或者第三方库(如 zap、logrus):
logger := zap.NewProduction()
defer logger.Sync()
那就直接去对应日志文件查看即可。
docker logs my-golang-container
导出:
docker logs my-golang-container > app.log
Debian 一般用 logrotate:
sudo nano /etc/logrotate.d/myapp
示例:
/var/log/myapp.log {
daily
rotate 7
compress
missingok
notifempty
}
| 场景 | 方法 |
|---|---|
| 直接运行 | > log 2>&1 |
| systemd | journalctl -u 服务名 |
| Docker | docker logs |
| 代码写文件 | 直接读文件 |
如果你能告诉我:
我可以给你更精确的命令或示例配置。