温馨提示×

怎样导debian golang日志

小樊
40
2026-10-04 04:57:18
栏目: 编程语言

在 Debian 上“导 Golang 日志”通常有几个常见场景,我先按最常见的情况给你说明,你看看符合哪一个,再决定用哪种方式。


一、Golang 程序自身输出日志(最常用)

1️⃣ 标准输出 / 错误输出重定向

如果你的 Golang 程序是这样运行的:

./myapp

可以直接把日志导出到文件:

./myapp > /var/log/myapp.log 2>&1
  • >:标准输出
  • 2>&1:错误输出也写入
  • 日志文件建议放 /var/log/

2️⃣ 使用 systemd(Debian 推荐方式)

如果你用 systemd 管理 Golang 服务:

创建 service 文件

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 上最标准、最推荐的方式


二、Golang 代码里写日志文件

如果你的程序里用的是 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 中运行的 Golang(如果你用了容器)

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
代码写文件 直接读文件

如果你能告诉我:

  • ✅ Golang 是怎么运行的(直接 / systemd / Docker)
  • ✅ 用的什么日志库(log / zap / logrus)
  • ✅ “导”是指导出文件还是远程收集

我可以给你更精确的命令或示例配置。

0 踩