增加日志初始化
This commit is contained in:
125
client.go
125
client.go
@ -13,6 +13,7 @@ import (
|
||||
"path/filepath"
|
||||
"strings"
|
||||
"sync"
|
||||
"time"
|
||||
|
||||
"git.zhangdeman.cn/zhangdeman/util"
|
||||
|
||||
@ -43,6 +44,7 @@ func init() {
|
||||
type client struct {
|
||||
lock *sync.RWMutex
|
||||
clientTable map[string]*DBClient
|
||||
logger *zap.Logger
|
||||
}
|
||||
|
||||
// AddWithConfigFile 使用文件生成新的客户端,文件名去掉后缀作为flag
|
||||
@ -209,22 +211,33 @@ func (c *client) GetSlaveClient(ctx *gin.Context, dbFlag string) (*gorm.DB, erro
|
||||
// Author : go_developer@163.com<白茶清欢>
|
||||
//
|
||||
// Date : 20:23 2022/6/5
|
||||
func (c *client) getLogInstance(logConf *LogConfig, loggerInstance *zap.Logger) (*zap.Logger, error) {
|
||||
if nil != loggerInstance {
|
||||
return loggerInstance, nil
|
||||
}
|
||||
func (c *client) getLogInstance(logConf *LogConfig) (*zap.Logger, error) {
|
||||
if nil == logConf {
|
||||
return nil, nil
|
||||
}
|
||||
logConfList := []logger.SetLoggerOptionFunc{logger.WithEncoder(logConf.Encoder), logger.WithCallerSkip(logConf.Skip), logger.WithCaller()}
|
||||
if logConf.ConsoleOutput {
|
||||
logConfList := []logger.SetLoggerOptionFunc{
|
||||
logger.WithCallerSkip(logConf.CallerSkip),
|
||||
logger.WithCaller(),
|
||||
logger.WithUseJsonFormat(logConf.UseJson),
|
||||
logger.WithShortCaller(logConf.UseShortFile),
|
||||
}
|
||||
if logConf.Console {
|
||||
logConfList = append(logConfList, logger.WithConsoleOutput())
|
||||
}
|
||||
|
||||
var (
|
||||
err error
|
||||
err error
|
||||
loggerInstance *zap.Logger
|
||||
)
|
||||
if loggerInstance, err = logger.NewLogger(logConf.Level, logConf.SplitConfig, logConfList...); nil != err {
|
||||
splitConfig := &logger.RotateLogConfig{
|
||||
TimeIntervalType: logConf.TimeIntervalType,
|
||||
LogPath: logConf.Path,
|
||||
LogFileName: logConf.Name,
|
||||
DivisionChar: logConf.DivisionChar,
|
||||
FullLogFormat: logConf.Format,
|
||||
MaxAge: time.Duration(logConf.MaxAge) * time.Second,
|
||||
}
|
||||
if loggerInstance, err = logger.NewLogger(logConf.LogLevel, splitConfig, logConfList...); nil != err {
|
||||
return nil, err
|
||||
}
|
||||
return loggerInstance, nil
|
||||
@ -256,7 +269,7 @@ func (c *client) GetDatabaseClient(conf *Mysql, logConf *LogConfig) (*gorm.DB, e
|
||||
}
|
||||
|
||||
if nil != logConf {
|
||||
if loggerInstance, err = getLogInstance(logConf, nil); nil != err {
|
||||
if loggerInstance, err = c.getLogInstance(logConf); nil != err {
|
||||
return nil, err
|
||||
}
|
||||
instance.Logger = wrapper.NewGormLoggerWithInstance(nil, instance, loggerInstance, "", nil)
|
||||
@ -283,31 +296,6 @@ func (c *client) buildConnectionDSN(conf *Mysql) string {
|
||||
)
|
||||
}
|
||||
|
||||
// ========================== 以下是老版本支持
|
||||
|
||||
// NewDBClient ...
|
||||
//
|
||||
// Author : go_developer@163.com<白茶清欢>
|
||||
//
|
||||
// Date : 3:09 PM 2021/12/24
|
||||
func NewDBClient(masterConf *DBConfig, slaveConf *DBConfig, logConf *LogConfig, loggerInstance *zap.Logger, extraRequestFieldList []string) (*DBClient, error) {
|
||||
client := &DBClient{
|
||||
extraFieldList: extraRequestFieldList,
|
||||
}
|
||||
var err error
|
||||
// 日志初始化失败
|
||||
if client.loggerInstance, err = getLogInstance(logConf, loggerInstance); nil != err {
|
||||
return nil, err
|
||||
}
|
||||
if client.master, err = GetDatabaseClient(masterConf, nil); nil != err {
|
||||
return nil, err
|
||||
}
|
||||
if client.slave, err = GetDatabaseClient(slaveConf, nil); nil != err {
|
||||
return nil, err
|
||||
}
|
||||
return client, nil
|
||||
}
|
||||
|
||||
// DBClient 包装日志实例
|
||||
//
|
||||
// Author : go_developer@163.com<白茶清欢>
|
||||
@ -361,72 +349,3 @@ func (dc *DBClient) GetSlave(ctx *gin.Context) *gorm.DB {
|
||||
func (dc *DBClient) getLogger(ctx *gin.Context, dbClient *gorm.DB, node string) gormLogger.Interface {
|
||||
return wrapper.NewGormLoggerWithInstance(ctx, dbClient, dc.loggerInstance, node, dc.extraFieldList)
|
||||
}
|
||||
|
||||
// getLogInstance 获取日志实例
|
||||
//
|
||||
// Author : go_developer@163.com<白茶清欢>
|
||||
//
|
||||
// Date : 3:20 PM 2021/12/24
|
||||
func getLogInstance(logConf *LogConfig, loggerInstance *zap.Logger) (*zap.Logger, error) {
|
||||
if nil != loggerInstance {
|
||||
return loggerInstance, nil
|
||||
}
|
||||
if nil == logConf {
|
||||
return nil, nil
|
||||
}
|
||||
logConfList := []logger.SetLoggerOptionFunc{logger.WithEncoder(logConf.Encoder), logger.WithCallerSkip(logConf.Skip), logger.WithCaller()}
|
||||
if logConf.ConsoleOutput {
|
||||
logConfList = append(logConfList, logger.WithConsoleOutput())
|
||||
}
|
||||
|
||||
var (
|
||||
err error
|
||||
)
|
||||
if loggerInstance, err = logger.NewLogger(logConf.Level, logConf.SplitConfig, logConfList...); nil != err {
|
||||
return nil, err
|
||||
}
|
||||
return loggerInstance, nil
|
||||
}
|
||||
|
||||
// GetDatabaseClient 获取日志实例
|
||||
//
|
||||
// Author : go_developer@163.com<白茶清欢>
|
||||
//
|
||||
// Date : 10:49 下午 2021/3/1
|
||||
func GetDatabaseClient(conf *DBConfig, logConf *LogConfig) (*gorm.DB, error) {
|
||||
var (
|
||||
instance *gorm.DB
|
||||
err error
|
||||
loggerInstance *zap.Logger
|
||||
)
|
||||
|
||||
if instance, err = gorm.Open(mysql.Open(buildConnectionDSN(conf)), &gorm.Config{}); nil != err {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if nil != logConf {
|
||||
if loggerInstance, err = getLogInstance(logConf, nil); nil != err {
|
||||
return nil, err
|
||||
}
|
||||
instance.Logger = wrapper.NewGormLoggerWithInstance(nil, instance, loggerInstance, "", nil)
|
||||
}
|
||||
|
||||
return instance, nil
|
||||
}
|
||||
|
||||
// buildConnectionDSN 构建建立连接的DSN
|
||||
//
|
||||
// Author : go_developer@163.com<白茶清欢>
|
||||
//
|
||||
// Date : 9:34 下午 2021/3/1
|
||||
func buildConnectionDSN(conf *DBConfig) string {
|
||||
return fmt.Sprintf(
|
||||
"%s:%s@tcp(%s:%d)/%s?charset=%s&parseTime=True&loc=Local",
|
||||
conf.Username,
|
||||
conf.Password,
|
||||
conf.Host,
|
||||
conf.Port,
|
||||
conf.Database,
|
||||
conf.Charset,
|
||||
)
|
||||
}
|
||||
|
Reference in New Issue
Block a user