温馨提示×

golang日志debian怎样实时看

小樊
40
2026-09-25 11:08:51
栏目: 编程语言

在 Debian 上用 Go 写的程序,日志“实时看”通常分 程序正在前台运行 和 日志写入文件 两种情况。下面按常见场景给你总结。


一、Go 程序日志输出到终端(前台运行)

如果你是直接在 Debian 上运行:

go run main.go
# 或
./yourapp

那么日志本来就实时打印在终端,直接看即可。


二、日志写入文件(最常见)

1️⃣ 使用 tail -f 实时查看

假设日志文件是:

/var/log/yourapp.log

实时查看:

tail -f /var/log/yourapp.log

只看最后 100 行并实时:

tail -n 100 -f /var/log/yourapp.log

✅ 最常用、最简单


2️⃣ 日志按天切割(如 logrus / zap / lumberjack)

如果你用了 lumberjack:

&lumberjack.Logger{
    Filename:   "/var/log/yourapp.log",
    MaxSize:    100,
    MaxBackups: 7,
    Compress:   true,
}

日志可能是:

yourapp.log
yourapp-2026-01-21.log

实时看当前日志:

tail -F /var/log/yourapp.log

⚠️ 注意:

  • -f:跟踪文件描述符
  • -F:文件被 rename 后还能继续跟踪(更适合日志切割)

三、用 systemd 管理的 Go 服务(推荐)

查看实时日志

journalctl -u yourapp.service -f

从启动开始:

journalctl -u yourapp.service -f -n 200

✅ 不需要自己写日志文件
✅ 自动轮转、权限安全


四、多行日志 / JSON 日志更好看

JSON 日志(zap / logrus)

tail -f yourapp.log | jq

没有 jq:

sudo apt install jq

五、过滤关键字实时看

tail -f yourapp.log | grep ERROR

Go 中建议日志带级别:

log.Println("ERROR: db connect failed")

六、推荐组合(生产环境)

✅ 最佳实践

  • Go 程序:输出到 stdout
  • systemd 管理
  • 查看日志:
journalctl -u yourapp -f

或

  • 文件 + tail -F

七、常见坑

❌ 用了 log.SetOutput(os.Stdout) 但服务被 nohup 吞了
✅ 用 systemd 或重定向文件

❌ tail -f 看不到日志
✅ 确认程序真的在写这个文件


如果你愿意,可以告诉我:

  • Go 用的什么日志库(log / logrus / zap)
  • 是 systemd / docker / 裸跑
  • 日志在哪

我可以给你最合适的一条命令。

0 踩