温馨提示×

Golang日志在Debian如何查

小樊
42
2026-07-27 11:27:53
栏目: 编程语言

在 Debian 系统上查看 Golang(Go)程序的日志,取决于你的程序是如何输出日志的。下面按常见场景给你详细说明。


一、最常见情况:日志输出到 stdout / stderr

1️⃣ 直接运行程序

如果你是这样运行的:

go run main.go

./myapp

那么日志会直接输出到终端,你看到的就是日志。


2️⃣ 后台运行(nohup / &)

使用 nohup

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

查看日志:

tail -f app.log

使用 &

./myapp > app.log 2>&1 &

查看:

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

二、使用 systemd 管理(推荐 ✅)

如果你用 systemd 管理 Go 服务(最常见于生产环境)。

1️⃣ 查看服务日志

sudo journalctl -u your-service-name

实时查看:

sudo journalctl -u your-service-name -f

查看最近 100 行:

sudo journalctl -u your-service-name -n 100

2️⃣ Go 程序不需要写文件

只要 Go 程序输出到 stdout/stderrsystemd 会自动接管日志。


三、Go 程序中写日志文件

示例(Go 代码)

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

查看日志:

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

⚠️ 注意权限问题:

sudo chown youruser:youruser /var/log/myapp.log

四、使用第三方日志库

1️⃣ logrus / zap / zerolog

通常也是输出到 stdout 或文件。

例如:

log := logrus.New()
log.Out = os.Stdout

查看方式同上。


五、Docker 场景(如果你用容器)

docker logs <container_id>
docker logs -f <container_id>

六、常用排查命令速查表

场景 命令
systemd 服务 journalctl -u 服务名 -f
查看文件 tail -f app.log
后台进程 `ps aux
所有日志 journalctl -f
按时间 journalctl --since "10 min ago"

七、推荐最佳实践 ✅

生产环境

  • 使用 systemd
  • Go 程序输出到 stdout
  • 不自己写日志文件

开发环境

  • go run
  • 或直接 ./app

如果你愿意,可以把你的 Go 启动方式 / systemd 配置 / Docker 配置贴出来,我可以帮你精确判断日志在哪、怎么查。

0