温馨提示×

Golang日志怎么查Debian

小樊
32
2026-07-27 11:00:05
栏目: 编程语言

Debian 上查 Golang 程序日志,要看你的程序日志输出到哪里。下面按常见情况给你一个排查清单。


一、Golang 程序日志常见输出方式

1️⃣ 输出到 stdout / stderr(最常见)

很多 Go 程序直接:

log.Println("xxx")
fmt.Println("xxx")

这类日志不会自动写文件,而是:

  • 前台运行 → 直接显示在终端
  • systemd 启动 → 进 journald

✅ systemd 下查看

# 查看服务日志
journalctl -u your-service-name -f

# 查看最近 100 行
journalctl -u your-service-name -n 100

# 指定时间
journalctl -u your-service-name --since "2025-01-01" --until "2025-01-02"

如果不知道服务名:

systemctl list-units --type=service

2️⃣ 日志写到文件

例如:

log.SetOutput(os.OpenFile("/var/log/myapp.log", os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644))

✅ 查看方式

tail -f /var/log/myapp.log
less /var/log/myapp.log
grep ERROR /var/log/myapp.log

3️⃣ 使用第三方日志库(zap / logrus / zerolog)

这些库通常:

  • 同时输出到 文件 + stdout
  • 或按配置输出

常见位置

/var/log/
/var/log/app/
/tmp/
./logs/

搜一下:

find / -name "*.log" 2>/dev/null | grep -v proc

或:

lsof -p <pid> | grep log

二、Debian 系统日志(调试用)

1️⃣ systemd 日志(重点)

journalctl -xe

查某个进程:

ps aux | grep your-program
journalctl _PID=<pid>

2️⃣ 传统 syslog(部分系统)

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

查看:

tail -f /var/log/syslog
grep go /var/log/syslog

三、如果程序是 Docker 运行的

docker logs <container-id> -f

或:

docker inspect <container-id> | grep LogPath

四、快速排查流程(推荐)

# 1. 找到进程
ps aux | grep your-app

# 2. 看是不是 systemd
systemctl status your-app

# 3. 看 journal
journalctl -u your-app -f

# 4. 看有没有日志文件
ls /var/log/

# 5. 实在找不到
strace -p <pid> -e write

五、常见坑

情况 原因
日志看不到 只输出到 stdout,没写文件
日志为空 日志被 buffer,没 flush
权限问题 /var/log 没写权限
Docker 日志在容器里

六、如果你愿意,我可以更精确帮你

你可以直接贴:

  1. Go 程序是怎么启动的(systemd / docker / 手动)
  2. 用了什么日志库
  3. Debian 版本

我可以一步一步帮你定位到具体日志文件 ✅

0