在CentOS中,Golang应用的日志存储方案可以根据具体需求选择,以下是一些推荐的日志库和工具:
go-logger
log/slog
的日志文件管理功能。zap
logrus
journalctl
rsyslog 或 syslog-ng
logrotate
ELK Stack (Elasticsearch, Logstash, Kibana)
Auditd
Sysstat
package main
import (
"github.com/donnie4w/go-logger"
)
func main() {
logger := logger.NewLogger(10000, "info") // 设置日志级别为info,缓冲区大小为10000
logger.SetLogger("file", `{"filename":"app.log"}`) // 设置日志输出到文件app.log
logger.Info("This is an info message")
logger.Error("This is an error message")
}
package main
import (
"go.uber.org/zap"
"go.uber.org/zap/zapcore"
)
func main() {
config := zap.Config{
Encoding: "json",
Level: zap.NewAtomicLevelAt(zap.InfoLevel),
OutputPaths: []string{"stdout"},
ErrorOutputPaths: []string{"stderr"},
}
logger := zap.New(config)
defer logger.Sync() // flushes buffer, if any
logger.Info("logger construction succeeded")
}
package main
import (
"github.com/sirupsen/logrus"
)
func main() {
log := logrus.New()
log.SetFormatter(&logrus.JSONFormatter{})
log.SetLevel(logrus.DebugLevel)
log.WithFields(logrus.Fields{
"animal": "walrus",
"size": 10,
}).Info("A group of walrus emerges from the ocean")
}
通过这些日志库和工具,可以有效地管理和分析CentOS中Golang应用的日志,满足不同的日志存储和管理需求。