在 CentOS 系統中,使用 Golang 編寫的應用程序可以通過多種方式設置日志級別。以下是一些常見的方法:
log
包如果你使用的是 Go 標準庫中的 log
包,可以通過設置不同的日志輸出格式和前綴來區分日志級別。
package main
import (
"log"
"os"
)
func main() {
// 設置日志輸出到標準輸出
log.SetOutput(os.Stdout)
// 設置日志前綴和標志
log.SetPrefix("INFO: ")
log.SetFlags(log.Ldate | log.Ltime | log.Lshortfile)
log.Println("這是一條信息日志")
log.Printf("這是一條格式化日志: %d", 42)
// 更改日志級別(通過不同的前綴)
log.SetPrefix("ERROR: ")
log.Println("這是一條錯誤日志")
}
對于更復雜的日志需求,推薦使用第三方日志庫,如 logrus
或 zap
。這些庫提供了豐富的功能,包括日志級別、結構化日志、日志格式化等。
logrus
首先,安裝 logrus
:
go get github.com/sirupsen/logrus
然后,在代碼中使用:
package main
import (
"github.com/sirupsen/logrus"
)
func main() {
// 設置日志級別為 Debug(最低級別)
logrus.SetLevel(logrus.DebugLevel)
logrus.Debug("這是一條調試日志")
logrus.Info("這是一條信息日志")
logrus.Warn("這是一條警告日志")
logrus.Error("這是一條錯誤日志")
// 更改日志級別為 Info
logrus.SetLevel(logrus.InfoLevel)
logrus.Debug("這條調試日志不會被輸出")
}
zap
首先,安裝 zap
:
go get go.uber.org/zap
然后,在代碼中使用:
package main
import (
"go.uber.org/zap"
"go.uber.org/zap/zapcore"
)
func main() {
// 創建一個生產環境的 logger
logger, _ := zap.NewProduction()
defer logger.Sync()
// 獲取 logger 的核心部分
core := logger.Core()
// 設置日志級別為 Debug(最低級別)
newCore := core.WithOptions(zap.LevelEnablerFunc(func(level zapcore.Level) bool {
return level >= zapcore.DebugLevel
}))
logger = zap.New(newCore, zap.AddCaller())
logger.Debug("這是一條調試日志")
logger.Info("這是一條信息日志")
logger.Warn("這是一條警告日志")
logger.Error("這是一條錯誤日志")
// 更改日志級別為 Info
newCore = core.WithOptions(zap.LevelEnablerFunc(func(level zapcore.Level) bool {
return level >= zapcore.InfoLevel
}))
logger = zap.New(newCore, zap.AddCaller())
logger.Debug("這條調試日志不會被輸出")
}
對于更復雜的配置需求,可以使用配置文件來設置日志級別。例如,使用 JSON 或 YAML 格式的配置文件。
創建一個 config.json
文件:
{
"log_level": "info"
}
在代碼中讀取并應用配置:
package main
import (
"encoding/json"
"fmt"
"io/ioutil"
"log"
"os"
"github.com/sirupsen/logrus"
)
type Config struct {
LogLevel string `json:"log_level"`
}
func main() {
// 讀取配置文件
configFile, err := os.Open("config.json")
if err != nil {
log.Fatalf("無法打開配置文件: %v", err)
}
defer configFile.Close()
byteValue, _ := ioutil.ReadAll(configFile)
var config Config
json.Unmarshal(byteValue, &config)
// 設置日志級別
level, err := logrus.ParseLevel(config.LogLevel)
if err != nil {
log.Fatalf("無法解析日志級別: %v", err)
}
logrus.SetLevel(level)
logrus.Info("應用程序啟動")
logrus.Debug("這是一條調試日志(不會被輸出)")
}
通過這些方法,你可以在 CentOS 系統中靈活地設置和管理 Golang 應用程序的日志級別。