您的位置:首页 >Debian系统中Golang日志管理工具
发布于2026-04-24 阅读(0)
扫一扫,手机访问

聊到日志管理,工具选型是关键第一步。不同的场景,对日志的需求也大不相同。下面这份清单,基本覆盖了从生成到分析的全链路。
理论说再多,不如看看具体怎么落地。根据不同的部署形态和复杂度,这里提供三种典型的方案。
光说不练假把式,来看几个具体的配置例子,感受一下代码和配置是如何结合的。
package main
import (
"os"
"github.com/sirupsen/logrus"
)
func main() {
log := logrus.New()
log.SetFormatter(&logrus.JSONFormatter{})
log.SetOutput(os.Stdout) // 也可写入文件,交由logrotate管理
log.SetLevel(logrus.InfoLevel)
log.WithFields(logrus.Fields{
"service": "order",
"order_id": 1001,
}).Info("order created")
}
/var/log/myapp/*.log {
daily
rotate 7
missingok
notifempty
compress
create 0644 myapp myapp
}
package main
import (
"go.uber.org/zap"
"gopkg.in/natefinch/lumberjack.v2"
)
func main() {
logger, _ := zap.NewProduction()
defer logger.Sync()
// 应用内轮转
lumber := &lumberjack.Logger{
Filename: "/var/log/myapp/app.log",
MaxSize: 10, // MB
MaxBackups: 7,
MaxAge: 28, // days
Compress: true,
}
defer lumber.Close()
sugared := logger.Sugar()
sugared.Infow("user login", "user_id", 42, "ip", "192.168.1.10")
}
# /etc/systemd/system/myapp.service
[Unit]
Description=My Go App
After=network.target
[Service]
ExecStart=/usr/local/bin/myapp
Restart=always
StandardOutput=journal
StandardError=journal
SyslogIdentifier=myapp
[Install]
WantedBy=multi-user.target
部署后,使用 journalctl -u myapp -f 命令即可实时追踪该服务的日志。
日志收集起来不是目的,从中发现问题、洞察趋势才是价值所在。
最后,分享几个在长期实践中总结出的选型建议和最佳实践,希望能帮你少踩些坑。
trace_id、request_id、user_id。这能让你在排查问题时,轻松串联起一次请求在所有微服务中的完整路径。
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
9