在CentOS上配置Golang日志可以通過標準庫log
包、第三方庫如zap
、logrus
等來實現。以下是詳細步驟和示例代碼:
log
包package main
import (
"log"
"os"
)
func main() {
// 設置日志輸出到標準輸出
log.SetOutput(os.Stdout)
// 設置日志格式為帶有文件名和行號的輸出
log.SetFlags(log.LstdFlags | log.Lshortfile)
// 輸出日志
log.Println("這是一條INFO級別的日志")
log.Fatalf("這是一條嚴重錯誤日志: %s", "錯誤信息")
}
zap
zap
庫:go get go.uber.org/zap
zap
:package main
import (
"go.uber.org/zap"
"go.uber.org/zap/zapcore"
)
func main() {
logger := zap.NewProduction()
defer logger.Sync() // flushes buffer, if any
// 使用Info方法記錄日志
logger.Info("這是一條普通日志", zap.Int("logCount", 1), zap.String("appName", "MyApp"))
}
logrus
logrus
庫:go get github.com/sirupsen/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")
}
為了避免日志文件過大,可以使用logrotate
工具進行日志文件輪轉。
logrotate
:sudo yum install logrotate
logrotate
配置文件:/path/to/your/logfile {
daily
rotate 7
compress
missingok
notifempty
}
crontab
:echo "* * * * * /usr/sbin/logrotate /path/to/your/logrotate.conf" | crontab -
通過以上步驟,可以在CentOS系統上配置Golang日志,并根據實際需求選擇合適的日志庫和配置方式。