在 Linux 上查看 Golang 程序日志,主要取决于你的日志输出方式和运行方式。下面按常见场景给你一个实用指南。
很多 Golang 程序(尤其是 Web 服务)使用:
log.Println("hello")
fmt.Println("info")
这类日志默认输出到 stdout / stderr。
例如:
log.SetOutput(os.OpenFile("/var/log/app.log", ...))
或第三方库(zap、logrus)写文件。
go run main.go
# 或
./your-app
日志直接打印在终端。
nohup ./your-app > app.log 2>&1 &
查看日志:
tail -f app.log
systemctl start yourapp.service
journalctl -u yourapp.service
实时查看:
journalctl -u yourapp.service -f
只看法国的错误:
journalctl -u yourapp.service -p err
查看容器日志:
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
import "log"
log.WithField("user", "tom").Info("login")
logger, _ := zap.NewProduction()
logger.Info("started")
tail 错了文件StandardOutput=journal如果你能告诉我:
我可以给你更精确的命令。