1 Star 1 Fork 0

Breeze/bzv2

加入 Gitee
与超过 1400万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
new.go 1.81 KB
一键复制 编辑 原始数据 按行查看 历史
Breeze 提交于 2023-08-20 01:17 +08:00 . A:gin.test
package bzgorm
import (
"gitee.com/breezeHub/bzv2/pkg/code/bzerr"
"gorm.io/driver/mysql"
"gorm.io/gorm"
"gorm.io/gorm/logger"
"gorm.io/gorm/schema"
"log"
"os"
"path"
"time"
)
func NewMySQL(dsn string, logWriter logger.Interface) (*gorm.DB, error) {
db, err := gorm.Open(mysql.New(
mysql.Config{DSN: dsn}),
&gorm.Config{
NamingStrategy: schema.NamingStrategy{
SingularTable: true, // use singular table name, table for `User` would be `user` with this option enabled
},
NowFunc: func() time.Time { return time.Now().Local() }, // 更改创建时间使用的函数
PrepareStmt: true, // 在执行任何 SQL 时都会创建一个 prepared statement 并将其缓存,以提高后续的效率
Logger: logWriter,
})
return db, err
}
func LogLevel(logLevel string) logger.LogLevel {
switch logLevel {
case "info":
return logger.Info
case "warn":
return logger.Warn
case "error":
return logger.Error
default:
return logger.Silent
}
}
func LogWriter(isStdout bool, logFile string, logLevel logger.LogLevel, slowSqlThreshold time.Duration) (logger.Interface, error) {
var lw logger.Writer
if !isStdout {
if err := os.MkdirAll(path.Dir(logFile), os.ModePerm); err != nil {
return nil, err
}
logWriter, err := os.OpenFile(logFile, os.O_APPEND|os.O_WRONLY|os.O_CREATE, 0644)
if err != nil {
return nil, bzerr.Wrap(err, "failed to open db log file")
}
lw = log.New(logWriter, "\r\n", log.LstdFlags)
} else {
lw = log.New(os.Stdout, "\r\n", log.LstdFlags)
}
return logger.New(lw,
logger.Config{
SlowThreshold: slowSqlThreshold, // Slow SQL threshold
LogLevel: logLevel, // Log level
IgnoreRecordNotFoundError: true, // Ignore ErrRecordNotFound error for logger
},
), nil
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Go
1
https://gitee.com/breezeHub/bzv2.git
git@gitee.com:breezeHub/bzv2.git
breezeHub
bzv2
bzv2
v0.0.5

搜索帮助