在CentOS上配置Golang應用程序的日志可以通過以下幾種方式實現:
log
包os.Create
函數創建日志文件。log.SetOutput
函數將日志輸出到文件。log.SetFlags
函數設置日志的格式,如時間戳、文件名和行號等。logrotate
工具來實現日志文件的輪轉。go get github.com/sirupsen/logrus
logrus.New()
實例,設置日志級別、格式和輸出目標(文件或控制臺)。package main
import (
"github.com/sirupsen/logrus"
"os"
)
func main() {
logger := logrus.New()
logger.SetFormatter(&logrus.JSONFormatter{})
logger.SetOutput(os.Stdout)
logger.SetLevel(logrus.InfoLevel)
logger.Info("This is an info message")
logger.WithFields(logrus.Fields{
"animal": "walrus",
"size": 10,
}).Info("A group of walrus emerges from the ocean")
}
go get go.uber.org/zap
zap.NewProduction()
實例,設置日志級別、格式和輸出目標。package main
import (
"go.uber.org/zap"
"go.uber.org/zap/zapcore"
"os"
)
func main() {
logger := zap.NewProduction()
defer logger.Sync() // flushes buffer, if any
core := zapcore.NewCore(
zapcore.NewMultiWriteCore(
zapcore.AddSync(os.Stdout),
&lumberjack.Logger{
Filename: "/var/log/myapp.log",
MaxSize: 5, // megabytes
MaxBackups: 3,
MaxAge: 28, // days
Compress: true, // disabled by default
},
),
&zap.Config{
Encoding: "json",
Level: zap.NewAtomicLevelAt(zap.InfoLevel),
OutputPaths: []string{"stdout"},
ErrorOutputPaths: []string{"stderr"},
},
)
logger = logger.With(zap.增添(zap.String("animal", "walrus")))
logger.Info("This is an info message")
}
根據實際需求設置合適的日志級別,如 DEBUG
, INFO
, WARN
, ERROR
, FATAL
, OFF
。
自定義日志輸出格式,可以使用 log.SetFormatter
方法設置不同的格式化函數,如 logrus.TextFormatter
或 zapcore.TextEncoder
。
使用 logrotate
工具管理日志文件的大小和數量,防止單個日志文件過大。
以上就是在CentOS上配置Golang應用程序日志的一些技巧和步驟。根據項目的具體需求,可以選擇使用標準庫 log
包或第三方日志庫如 logrus
或 zap
,并靈活設置日志級別、輸出格式和輪轉策略。