温馨提示×

如何查看linux golang日志

小樊
48
2026-09-05 15:03:12
栏目: 编程语言

在 Linux 上查看 Golang 程序日志,主要取决于你的日志输出方式运行方式。下面按常见场景给你一个实用指南。


一、Golang 日志通常输出在哪里?

1. 输出到标准输出(最常见)

很多 Golang 程序(尤其是 Web 服务)使用:

log.Println("hello")
fmt.Println("info")

这类日志默认输出到 stdout / stderr

2. 输出到日志文件

例如:

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

或第三方库(zap、logrus)写文件。


二、不同运行方式下如何查看日志

✅ 方式 1:直接用命令行运行

go run main.go
# 或
./your-app

日志直接打印在终端。


✅ 方式 2:后台运行(nohup / &)

nohup ./your-app > app.log 2>&1 &

查看日志:

tail -f app.log

✅ 方式 3:systemd 服务(推荐生产环境)

启动服务

systemctl start yourapp.service

查看日志(重点)

journalctl -u yourapp.service

实时查看:

journalctl -u yourapp.service -f

只看法国的错误:

journalctl -u yourapp.service -p err

✅ 方式 4:Docker 容器中的 Golang 日志

查看容器日志:

docker logs -f container_name

如果用了 docker-compose:

docker-compose logs -f

三、常用日志查看命令

# 实时查看
tail -f app.log

# 查看最后 100 行
tail -n 100 app.log

# 搜索关键字
grep ERROR app.log

# 实时搜索
tail -f app.log | grep ERROR

# 分页查看
less app.log

四、Golang 日志库推荐(更好管理)

1. 标准库

import "log"

2. logrus(易用)

log.WithField("user", "tom").Info("login")

3. zap(高性能,推荐)

logger, _ := zap.NewProduction()
logger.Info("started")

五、排查没日志的常见原因

  • ✅ 日志写到了文件,但你 tail 错了文件
  • ✅ systemd 没配置 StandardOutput=journal
  • ✅ Docker 没前台运行(程序退出了)
  • ✅ 日志级别太高(只打了 error,你看了 info)

如果你能告诉我:

  • 本地 / 服务器 / Docker / K8s
  • 用的是 标准库 / zap / logrus
  • 是否已 写文件 or systemd

我可以给你更精确的命令。

0