在CentOS下配置Golang應用的日志,可以采用以下幾種方法:
log
包Golang的標準庫 log
包提供了基本的日志記錄功能。你可以通過設置日志級別、輸出格式和輸出目標來配置日志。例如,將日志輸出到文件并設置日志級別:
package main
import (
"log"
"os"
)
func main() {
logFile, err := os.OpenFile("app.log", os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0644)
if err != nil {
log.Fatalf("error opening log file: %v", err)
}
defer logFile.Close()
log.SetOutput(logFile)
log.SetFlags(log.Ldate | log.Ltime | log.Lshortfile)
log.Println("This is a log message")
log.Fatalf("This is a fatal error message: %s", "error info")
}
logrus 是一個功能強大且易于使用的日志庫,支持多種格式的日志輸出和級別控制。以下是一個使用 logrus 的示例:
package main
import (
"github.com/sirupsen/logrus"
"os"
)
func main() {
log := logrus.New()
// 設置日志格式為JSON
log.SetFormatter(&logrus.JSONFormatter{})
// 添加日志文件處理器
file, err := os.OpenFile("/var/log/myapp.log", os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0644)
if err != nil {
log.Fatalf("Failed to open log file: %v", err)
}
log.SetOutput(file)
// 記錄日志
log.WithFields(logrus.Fields{
"animal": "walrus",
"size": 10,
}).Info("A group of walrus emerges from the ocean")
}
zap 是 Uber 開源的高性能日志庫,具有結構化日志記錄和高度定制化的特點。以下是一個使用 zap 的示例:
package main
import (
"go.uber.org/zap"
"go.uber.org/zap/zapcore"
)
func main() {
config := zap.Config{
Level: zap.NewAtomicLevelAt(zap.InfoLevel),
Encoding: "json",
EncoderConfig: zapcore.EncoderConfig{
TimeKey: "ts",
LevelKey: "level",
MessageKey: "msg",
StacktraceKey: "stacktrace",
LineEnding: zapcore.DefaultLineEnding,
EncodeLevel: zapcore.LowercaseLevelEncoder,
EncodeTime: zapcore.ISO8601TimeEncoder,
EncodeDuration: zapcore.SecondsDurationEncoder,
EncodeCaller: zapcore.ShortCallerEncoder,
},
OutputPaths: []string{"stdout"},
ErrorOutputPaths: []string{"stderr"},
}
logger := config.Build()
defer logger.Sync() // flushes buffer, if any
logger.Info("This is an info message")
logger.Error("This is an error message", zap.String("err", "error info"))
}
為了避免日志文件過大,可以使用 logrotate
進行日志輪轉。你可以創建一個 logrotate
配置文件,例如 /etc/logrotate.d/myapp
:
/path/to/your/logfile {
daily
rotate 7
compress
missingok
notifempty
}
然后運行 logrotate
命令來應用配置:
sudo logrotate -f /etc/logrotate.d/myapp
通過以上步驟,可以在CentOS系統上配置Golang日志,并根據實際需求選擇合適的日志庫和配置方式。