温馨提示×

怎么查Debian的Golang日志

小樊
36
2026-07-27 09:47:51
栏目: 编程语言

在 Debian 上查看 Golang(Go)程序日志,取决于这个 Go 程序是怎么运行的。下面按常见场景给你一个完整的排查指南。


一、先确认:你的 Go 程序是怎么运行的?

1️⃣ 如果是 手工运行

比如:

go run main.go
# 或
./myapp

✅ 日志直接输出在 终端(stdout / stderr)

➡️ 只能在当前终端查看
➡️ 关闭终端后就没了


2️⃣ 如果是 systemd 服务(最常见)

很多 Debian 上运行的 Go 程序是以 systemd 方式启动的。

✅ 查看服务日志(强烈推荐)

sudo journalctl -u 服务名 -f

例如:

sudo journalctl -u mygoapp -f

常用参数:

-u 服务名        # 指定服务
-f              # 实时跟踪
-n 100          # 最近 100 行
--since today   # 今天

3️⃣ 如果 Go 程序自己写日志文件

比如代码里有:

log.SetOutput(os.OpenFile("/var/log/myapp.log", ...))

✅ 查看日志文件

cat /var/log/myapp.log
tail -f /var/log/myapp.log
less /var/log/myapp.log

常见路径:

/var/log/
/tmp/
当前程序目录

二、Debian 系统常见日志位置(通用)

系统日志

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

查看:

tail -f /var/log/syslog

三、Go 程序“没日志”的常见原因

❌ 1. 日志被写到 stdout,但 systemd 没捕获

✅ 正常情况 systemd 会自动捕获 stdout/stderr

如果没看到:

sudo journalctl -u 服务名

❌ 2. Go 日志被缓冲了

Go 的 log 默认是行缓冲,但 fmt.Println 可能延迟。

✅ 建议:

log.SetFlags(log.LstdFlags | log.Lshortfile)

❌ 3. 程序没启动 / 启动失败

systemctl status 服务名

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

✅ Step 1:服务状态

systemctl status mygoapp

✅ Step 2:查看 systemd 日志

sudo journalctl -u mygoapp -n 100

✅ Step 3:确认程序是否写文件

ls /var/log | grep go

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

你可以直接贴出:

  1. Go 程序是怎么启动的?
    • systemd?
    • docker?
    • 手动运行?
  2. Go 日志是怎么写的?
    • log.Println
    • fmt.Println
    • zap / logrus
  3. Debian 版本
    cat /etc/debian_version
    

我可以一步一步帮你定位 ✅

0