温馨提示×

Debian如何查看Golang日志

小樊
49
2026-07-27 09:37:51
栏目: 编程语言

在 Debian 系统上查看 Golang 程序的日志,主要取决于你的 Go 程序是如何输出日志的(stdout、文件、syslog、systemd 等)。下面按常见场景给你一个完整说明。


一、如果是直接运行 Go 程序

1️⃣ 直接输出到终端(stdout / stderr)

大多数 Go 程序使用:

fmt.Println()
log.Println()
log.Fatal()

✅ 查看方式:

go run main.go

或:

./myapp

日志会直接显示在终端。


二、如果 Go 程序把日志写到文件

常见写法

log.SetOutput(os.OpenFile("app.log", os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644))

查看日志

cat app.log
less app.log
tail -f app.log

✅ 实时查看:

tail -f app.log

三、如果 Go 程序作为 systemd 服务运行(最常见)

1️⃣ 查看 systemd 日志

journalctl -u your-service-name

实时查看:

journalctl -u your-service-name -f

查看最近 100 行:

journalctl -u your-service-name -n 100

2️⃣ 查看是否输出到 stdout

Go 程序如果在 systemd 中运行,默认会输出到 journal。

示例 service 文件:

[Service]
ExecStart=/usr/local/bin/myapp
Restart=always

✅ 日志会自动进入 systemd journal。


四、如果 Go 使用了 syslog

Go 示例

log/syslog

查看 syslog

cat /var/log/syslog
less /var/log/syslog

或:

grep myapp /var/log/syslog

五、如果 Go 使用第三方日志库

常见库

  • logrus
  • zap
  • zerolog

✅ 查看方式取决于配置:

  • 输出到 stdout → systemd journal
  • 输出到文件 → 直接查看文件
  • 输出到远程 → 查看日志服务器

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

# 1. 是否是 systemd 服务
systemctl status your-service

# 2. 查看 journal 日志
journalctl -u your-service -f

# 3. 是否写文件
ls /var/log/
find / -name "*.log" 2>/dev/null

# 4. 查看进程输出
ps aux | grep myapp

七、常见问题

❓ 看不到日志?

  • Go 程序是否真的调用了 log
  • 是否被 systemd 重定向
  • 是否被日志库关闭了输出

❓ 日志太多?

journalctl -u your-service --since "10 min ago"

八、如果你愿意,我可以帮你:

  • ✅ 分析你的 Go 代码日志配置
  • ✅ 写一个标准的 systemd + Go 日志方案
  • ✅ 推荐生产环境 Go 日志实践

你可以直接贴出:

  • Go 程序运行方式
  • 是否使用 systemd
  • 日志相关代码

0