mirror of
https://gitee.ltd/lxh/logger.git
synced 2025-10-23 14:56:16 +08:00
🎉logger的v2版本,暂未支持环境变量配置
This commit is contained in:
79
logger.go
Normal file
79
logger.go
Normal file
@@ -0,0 +1,79 @@
|
||||
package zap_logger
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"os"
|
||||
|
||||
_ "embed"
|
||||
|
||||
"go.uber.org/zap"
|
||||
"go.uber.org/zap/zapcore"
|
||||
"gopkg.in/yaml.v3"
|
||||
)
|
||||
|
||||
//go:embed default_logger.yaml
|
||||
var defaultConfigByte []byte
|
||||
|
||||
type IZapLogger interface {
|
||||
Init() zapcore.Core
|
||||
}
|
||||
|
||||
type ZapLogger struct{}
|
||||
|
||||
func NewZapLogger(filePath string, opts ...Option) error {
|
||||
var fileBytes []byte
|
||||
var err error
|
||||
// 读取默认配置
|
||||
if filePath == "" {
|
||||
fileBytes = defaultConfigByte
|
||||
} else {
|
||||
fileBytes, err = os.ReadFile(filePath)
|
||||
if err != nil {
|
||||
return errors.New("read logger file error: " + err.Error())
|
||||
}
|
||||
}
|
||||
|
||||
var config Config
|
||||
err = yaml.Unmarshal(fileBytes, &config)
|
||||
if err != nil {
|
||||
return errors.New("unmarshal logger file error: " + err.Error())
|
||||
}
|
||||
|
||||
// 应用最新设置
|
||||
for _, opt := range opts {
|
||||
opt(&config)
|
||||
}
|
||||
|
||||
var cores []zapcore.Core
|
||||
if config.File.Enable {
|
||||
config.File.Encoder = config.Logger.Encoder
|
||||
config.File.Level = config.Logger.Level
|
||||
cores = append(cores, newFileLogger(config.File).Init())
|
||||
}
|
||||
if config.Console.Enable {
|
||||
config.Console.Encoder = config.Logger.Encoder
|
||||
config.Console.Level = config.Logger.Level
|
||||
cores = append(cores, newConsoleLogger(config.Console).Init())
|
||||
}
|
||||
if config.Loki.Enable {
|
||||
config.Loki.Encoder = config.Logger.Encoder
|
||||
config.Loki.Level = config.Logger.Level
|
||||
cores = append(cores, newLokiLogger(config.Loki).Init())
|
||||
}
|
||||
// 如果一个都没开启这默认开启一个console,info级别
|
||||
if len(cores) <= 0 {
|
||||
config.Console.Encoder = "console"
|
||||
config.Logger.Level = "info"
|
||||
config.Console.Level = "info"
|
||||
cores = append(cores, newConsoleLogger(config.Console).Init())
|
||||
}
|
||||
|
||||
logger := zap.New(
|
||||
zapcore.NewTee(cores...), // 开启的日志核心
|
||||
zap.AddCaller(), // 启用调用者信息
|
||||
zap.AddCallerSkip(1), // 调用者信息跳过
|
||||
zap.AddStacktrace(zap.ErrorLevel), // 开启panic日志错误堆栈收集
|
||||
)
|
||||
zap.ReplaceGlobals(logger)
|
||||
return nil
|
||||
}
|
Reference in New Issue
Block a user