72 lines
1.8 KiB
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
|
|
}
|