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