1 Star 0 Fork 0

vick/kinfu

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
fgorm.go 2.14 KB
一键复制 编辑 原始数据 按行查看 历史
vick 提交于 2024-03-04 19:35 . fix:fgin框架提交
package fgin
import (
"fmt"
"time"
"gorm.io/driver/mysql"
"gorm.io/gorm"
glogger "gorm.io/gorm/logger"
)
var fdbMap = make(map[string]*gorm.DB)
func initGorm() {
if len(fginConfig.Mysql) == 0 {
// 没有填写mysql配置则不进行初始化
return
}
var newGormLog glogger.Interface
if fginConfig.GormLog != (GormLog{}) {
// 配置文件如果没有gorm log的配置,则配置为空
newGormLog = initGormLog()
}
for _, v := range fginConfig.Mysql {
dsn := v.Target
db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{
Logger: newGormLog,
})
if err != nil {
panic("mysql初始化失败: " + err.Error())
}
if v.MaxIdle > 0 && v.MaxOpen > 0 && v.MaxLift > 0 {
// 构建连接池
// 获取通用数据库对象 sql.DB ,然后使用其提供的功能
sqlDB, err := db.DB()
if err != nil {
panic("mysql连接池失败: " + err.Error())
}
// SetMaxIdleConns 用于设置连接池中空闲连接的最大数量。
sqlDB.SetMaxIdleConns(v.MaxIdle)
// SetMaxOpenConns 设置打开数据库连接的最大数量。
sqlDB.SetMaxOpenConns(v.MaxOpen)
// SetConnMaxLifetime 设置了连接可复用的最大时间。
sqlDB.SetConnMaxLifetime(time.Millisecond * time.Duration(v.MaxLift))
}
fdbMap[v.Name] = db
}
}
func initGormLog() glogger.Interface {
// 初始化gorm的日志输出
return glogger.New(
&fginGormLog{},
// log.New(os.Stdout, "\r\n", log.LstdFlags),
glogger.Config{
SlowThreshold: time.Duration(fginConfig.GormLog.SlowThreshold) * time.Millisecond,
LogLevel: glogger.LogLevel(fginConfig.GormLog.LogLevel),
IgnoreRecordNotFoundError: fginConfig.GormLog.IgnoreRecordNotFoundError,
ParameterizedQueries: fginConfig.GormLog.ParameterizedQueries,
Colorful: fginConfig.GormLog.Colorful,
},
)
}
type fginGormLog struct{}
func (fgLog *fginGormLog) Printf(msg string, data ...any) {
sqlStr := fmt.Sprintf(msg, data...)
if fginConfig.GormLog.LogLevel <= 2 {
logSuger.Error(sqlStr)
} else if fginConfig.GormLog.LogLevel == 3 {
logSuger.Warn(sqlStr)
} else if fginConfig.GormLog.LogLevel == 4 {
logSuger.Info(sqlStr)
}
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Go
1
https://gitee.com/wu-jin-feng/kinfu.git
git@gitee.com:wu-jin-feng/kinfu.git
wu-jin-feng
kinfu
kinfu
63ab2dd32d62

搜索帮助

0d507c66 1850385 C8b1a773 1850385