在CentOS上搭建Golang日志系统,这事儿其实没那么复杂。跟着下面的步骤走,很快就能搞定。

1. 安装Golang
得先确认一下系统里有没有装好Golang。如果还没装,一行命令搞定:
sudo yum install golang
2. 创建Golang项目
接下来,创建一个项目目录,然后初始化一个Go模块:
mkdir myapp
cd myapp
go mod init myapp
3. 安装日志库
日志库的选择很关键。Go生态里,logrus和zap是两员大将,都很成熟。这里以logrus为例:
go get github.com/sirupsen/logrus
4. 编写日志代码
在项目目录下创建main.go,把下面的代码放进去:
package main
import (
"github.com/sirupsen/logrus"
)
func main() {
// 设置日志级别
logrus.SetLevel(logrus.DebugLevel)
// 设置日志格式为JSON
logrus.SetFormatter(&logrus.JSONFormatter{})
// 记录不同级别的日志
logrus.Info("This is an info message")
logrus.Warn("This is a warning message")
logrus.Error("This is an error message")
// 记录带有字段的日志
logrus.WithFields(logrus.Fields{
"animal": "walrus",
"size": 10,
}).Info("A group of walrus emerges from the ocean")
}
这段代码演示了如何设置日志级别、格式,以及记录不同级别的日志。日志库还支持带上自定义字段,方便排查问题。
5. 运行项目
在项目目录下直接运行:
go run main.go
控制台里就能看到JSON格式的日志输出了。
6. 配置日志输出
更常见的是把日志输出到文件里,方便持久化存储和后续分析。只需要创建一个文件,然后设置SetOutput即可:
package main
import (
"github.com/sirupsen/logrus"
"os"
)
func main() {
// 创建或打开日志文件
file, err := os.OpenFile("app.log", os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0666)
if err != nil {
logrus.Fatal(err)
}
defer file.Close()
// 设置日志输出到文件
logrus.SetOutput(file)
// 设置日志级别
logrus.SetLevel(logrus.DebugLevel)
// 设置日志格式
logrus.SetFormatter(&logrus.JSONFormatter{})
// 记录日志
logrus.Info("This is an info message")
}
7. 监控和日志管理
日志系统搭建好之后,还需要考虑怎么管理和监控。这里推荐两个方案:ELK堆栈和Prometheus。
使用ELK堆栈
ELK(Elasticsearch, Logstash, Kibana)是经典的日志收集分析方案。具体步骤如下:
安装Elasticsearch:
sudo yum install elasticsearch sudo systemctl start elasticsearch sudo systemctl enable elasticsearch安装Logstash:
sudo yum install logstash sudo systemctl start logstash sudo systemctl enable logstash安装Kibana:
sudo yum install kibana sudo systemctl start kibana sudo systemctl enable kibana配置Logstash:编辑
/etc/logstash/conf.d/logstash.conf,添加上输入和输出插件的配置。配置Golang应用:修改应用的日志输出,让它把日志发送到Logstash。
使用Prometheus
如果更关注监控指标,Prometheus是个好选择:
安装Prometheus:
sudo yum install prometheus sudo systemctl start prometheus sudo systemctl enable prometheus配置Prometheus:编辑
/etc/prometheus/prometheus.yml,添加Golang应用的监控目标。安装Golang Prometheus客户端库:
go get github.com/prometheus/client_golang/prometheus go get github.com/prometheus/client_golang/prometheus/promhttp编写Prometheus监控代码:在Golang应用中添加相应的监控指标。
通过以上步骤,就能在CentOS上搭建一个功能完善的Golang日志系统。后续还能根据实际需求,灵活地扩展和优化。