温馨提示×

Debian Golang日志怎么找

小樊
50
2026-07-27 11:45:55
栏目: 编程语言

Debian 系统上排查 Golang(Go 程序)日志,没有一个“唯一位置”,具体要看 程序是怎么跑的、日志往哪写。下面按 最常见场景 给你一个快速定位指南。


一、先明确:Go 程序日志在哪里?

Go 程序日志通常来自以下几类:

  1. 程序自己写日志

    • log.Println / log.Fatalf
    • fmt.Println
    • 第三方日志库(zap、logrus、slog 等)
  2. 写文件

    • 直接写到:
      • /var/log/xxx.log
      • ./app.log
      • 用户自定义路径
  3. 输出到 stdout / stderr

    • 被 systemd / supervisor / docker 接管

二、最常见:systemd 管理的 Go 服务(强烈推荐)

如果你是用 systemd 启动的服务(最常见):

1️⃣ 查看服务日志(首选)

journalctl -u 服务名

例如:

journalctl -u mygoapp
journalctl -u mygoapp -f   # 实时
journalctl -u mygoapp --since "5 min ago"

Go 程序 stdout / stderr 都会在这里


2️⃣ 查看 systemd 服务文件

systemctl cat mygoapp

关注:

ExecStart=/usr/local/bin/mygoapp
StandardOutput=journal
StandardError=journal

三、直接运行 / 手动启动的 Go 程序

1️⃣ 前台运行

./mygoapp

日志直接输出在终端。


2️⃣ 后台运行(nohup)

nohup ./mygoapp > app.log 2>&1 &

日志在:

app.log

四、常见日志目录(Debian)

1️⃣ 系统标准日志

/var/log/

常见文件:

/var/log/syslog
/var/log/messages

查看:

grep mygoapp /var/log/syslog

2️⃣ Web / API 服务

如果是 HTTP 服务,可能日志在:

/var/log/nginx/
/var/log/apache2/

五、Docker 里的 Go 程序(如果你用容器)

查看容器日志

docker logs 容器名
docker logs -f 容器名

✅ Go 的 stdout/stderr 会直接在这里


六、Go 程序里日志写哪了?(排查代码)

常见写法

log.SetOutput(os.Stdout)
log.SetOutput(&lumberjack.Logger{
    Filename: "/var/log/myapp.log",
})

你可以直接搜代码:

grep -R "log.SetOutput" .
grep -R "/var/log" .

七、快速排查步骤(推荐)

90% 情况按这个来:

  1. 确认是不是 systemd 服务

    systemctl list-units | grep mygo
    
  2. 看 journalctl

    journalctl -u 服务名 -f
    
  3. 看程序是否写文件

    ls /var/log | grep go
    
  4. 看进程启动参数

    ps aux | grep mygo
    

八、如果你愿意,我可以帮你精确定位

你可以直接贴:

  • ✅ 服务名
  • ✅ 启动方式(systemd / docker / shell)
  • ✅ Go 程序类型(web / 后台任务 / CLI)

我可以 一步一步帮你找到日志文件

0