在 Debian 上“实时看 Golang 日志”通常分几种情况,取决于你的 Golang 程序是怎么运行的、日志写在哪里。下面按最常见场景给你讲。
如果你的程序是前台运行的(比如 ./main),日志本来就在终端:
./main
想实时看,就保持终端打开即可。
nohup ./main > app.log 2>&1 &
实时查看日志:
tail -f app.log
只看最新 100 行并实时:
tail -n 100 -f app.log
假设服务名是 myapp.service
sudo journalctl -u myapp -f
参数说明:
-f:实时跟踪-n 100:先看最近 100 行sudo journalctl -u myapp -n 100 -f
如果你的 Golang 程序用 log.Println 或 fmt.Println,默认就会进 journal。
常见写法:
log.SetOutput(os.OpenFile("app.log", os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644))
实时查看:
tail -f /path/to/app.log
logger, _ := zap.NewProduction()
defer logger.Sync()
logger.Info("server started")
不管用什么框架,只要输出到 stdout 或文件,都可以:
journalctl -u xxx -ftail -f xxx.logtail -f app.log error.log
tail -f app.log | grep ERROR
multitail app.log
安装:
sudo apt install multitail
本地实时看:
go run main.go
或带环境变量:
GIN_MODE=debug go run main.go
| 场景 | 命令 |
|---|---|
| 前台运行 | 直接看终端 |
| nohup | tail -f app.log |
| systemd | journalctl -u 服务名 -f |
| 写文件 | tail -f 文件路径 |
| 过滤错误 | `tail -f log |
如果你愿意,可以告诉我:
我可以直接给你最合适的实时查看方案。