Files
logger/util.go

72 lines
1.8 KiB
Go

// 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
}