package rds import ( "epur-pay/model" myLogger "epur-pay/pkg/logger" "fmt" "gorm.io/driver/mysql" "gorm.io/gorm" "gorm.io/gorm/logger" "time" ) var ( DB *gorm.DB ) func New(Rds *model.Rds, RunMode string) { var ( err error loggerConfig logger.Config ) dns := fmt.Sprintf("%s:%s@tcp(%s:%d)/%s?charset=%s&parseTime=True&loc=Local", Rds.User, Rds.PassWord, Rds.Host, Rds.Port, Rds.Name, Rds.CharSet) if RunMode == "release" { loggerConfig = logger.Config{ //慢SQL阈值 SlowThreshold: time.Duration(Rds.SlowThreshold) * time.Millisecond, //设置日志级别,只有Warn以上才会打印sql LogLevel: logger.Warn, Colorful: false, IgnoreRecordNotFoundError: true, } } else { loggerConfig = logger.Config{ //慢SQL阈值 SlowThreshold: time.Duration(Rds.SlowThreshold) * time.Millisecond, //设置日志级别,只有Warn以上才会打印sql LogLevel: logger.Info, Colorful: false, IgnoreRecordNotFoundError: true, } } slowLogger := logger.New( myLogger.RdsLogger, loggerConfig, ) if DB, err = gorm.Open( mysql.Open(dns), &gorm.Config{ //禁用全局事务 SkipDefaultTransaction: true, Logger: slowLogger, }); err != nil { myLogger.AccessLogger.Error("connect rds error!") panic(err.Error()) } fmt.Println("Rds ok") sdb, _ := DB.DB() sdb.SetMaxIdleConns(Rds.MaxIdleConns) sdb.SetMaxOpenConns(Rds.MaxOpenConns) sdb.SetConnMaxLifetime(60 * time.Second) }