温馨提示×

怎么在Debian查Golang日志

小樊
47
2026-07-27 09:19:48
栏目: 编程语言

在 Debian 上查看 Golang 应用日志,取决于你的程序是如何运行和记录日志的。下面按常见场景给你梳理一下。


一、查看 Golang 程序的标准输出 / 错误日志

1️⃣ 前台运行(终端)

如果你直接运行:

go run main.go

./myapp

日志会直接输出到终端(stdout / stderr)。


2️⃣ 后台运行(nohup / systemd / docker)

✅ 使用 nohup

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

查看日志:

tail -f app.log

二、使用 systemd 运行(最常见)

1️⃣ 查看日志(推荐)

如果你的 Golang 程序是通过 systemd 管理的:

sudo journalctl -u your-service-name

实时查看:

sudo journalctl -u your-service-name -f

查看最近 100 行:

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

2️⃣ 查看服务文件

systemctl status your-service-name

示例 service 文件:

[Unit]
Description=Golang App

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

[Install]
WantedBy=multi-user.target

三、Golang 自身写日志文件

如果你的代码里写了日志文件,比如:

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

查看:

tail -f /var/log/myapp.log

四、使用第三方日志库

常见库

  • log/slog
  • logrus
  • zap

日志位置取决于你的配置,例如:

logger, _ := zap.NewProduction()
defer logger.Sync()

通常输出到:

  • stdout
  • 文件
  • systemd journal

五、Docker 中运行的 Golang 程序

docker logs 容器名或ID

实时查看:

docker logs -f 容器名

六、快速排查技巧

查看进程输出位置

ls -l /proc/$(pidof myapp)/fd

查看所有日志(系统级)

journalctl -xe

七、总结(最常用)

场景 命令
systemd journalctl -u 服务名 -f
手动运行 终端 / nohup
日志文件 tail -f /var/log/xxx.log
Docker docker logs

如果你愿意,可以把 运行方式(systemd / docker / 直接运行)日志库 发我,我可以给你更精确的命令。

0