feat: 升级日志实现, 支持全局存储日志实例
This commit is contained in:
71
util.go
Normal file
71
util.go
Normal file
@@ -0,0 +1,71 @@
|
||||
// Package logger ...
|
||||
//
|
||||
// Description : logger ...
|
||||
//
|
||||
// Author : go_developer@163.com<白茶清欢>
|
||||
//
|
||||
// Date : 2025-12-31 12:49
|
||||
package logger
|
||||
|
||||
import (
|
||||
"strings"
|
||||
|
||||
"go.uber.org/zap"
|
||||
)
|
||||
|
||||
var (
|
||||
loggerInstanceTable = map[string]*zap.Logger{}
|
||||
nonLoggerInstance = zap.NewNop()
|
||||
)
|
||||
|
||||
// Instance 获取日志实例
|
||||
func Instance(instanceName string) *zap.Logger {
|
||||
if _, exist := loggerInstanceTable[instanceName]; !exist {
|
||||
// 未找到对应标识实例, 返回空实现
|
||||
return nonLoggerInstance
|
||||
}
|
||||
return loggerInstanceTable[instanceName]
|
||||
}
|
||||
|
||||
// GetLogInstanceFromInputConfig 从输入配置获取日志实例
|
||||
func GetLogInstanceFromInputConfig(logConf *InputLogConfig) (*zap.Logger, error) {
|
||||
if nil == logConf {
|
||||
return nil, nil
|
||||
}
|
||||
logConfList := []SetLoggerOptionFunc{
|
||||
WithCallerSkip(logConf.CallerSkip),
|
||||
WithCaller(),
|
||||
WithUseJsonFormat(logConf.UseJson),
|
||||
WithShortCaller(logConf.UseShortFile),
|
||||
}
|
||||
if logConf.Console {
|
||||
logConfList = append(logConfList, WithConsoleOutput())
|
||||
}
|
||||
logeFileName := logConf.Name
|
||||
if !strings.Contains(logeFileName, ".") {
|
||||
// 未设置文件后缀
|
||||
logeFileName = logConf.Name + ".log"
|
||||
}
|
||||
// 配置 zinc 日志同步
|
||||
logConfList = append(logConfList, WithZincLogCollect(logConf.ZincSyncConfig))
|
||||
|
||||
var (
|
||||
err error
|
||||
loggerInstance *zap.Logger
|
||||
splitConfig *RotateLogConfig
|
||||
)
|
||||
if splitConfig, err = NewRotateLogConfig(
|
||||
logConf.Path,
|
||||
logeFileName,
|
||||
WithDivisionChar(logConf.DivisionChar),
|
||||
WithTimeIntervalType(logConf.TimeIntervalType),
|
||||
WithMaxAge(logConf.MaxAge)); nil != err {
|
||||
return nil, err
|
||||
}
|
||||
if loggerInstance, err = NewLogger(logConf.LogLevel, splitConfig, logConfList...); nil != err {
|
||||
return nil, err
|
||||
}
|
||||
// 存储日志实例
|
||||
loggerInstanceTable[logConf.Name] = loggerInstance
|
||||
return loggerInstance, nil
|
||||
}
|
||||
Reference in New Issue
Block a user