代码拉取完成,页面将自动刷新
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
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。