GromV1 SQL输出到日志文件
gromV1 debug()方法只能输出到控制台 想记录日志文件
gromv2
import "gorm.io/gorm/logger"
db, err := gorm.Open(mysql.Open(connectionDSN), &gorm.Config{
Logger: logger.Default.LogMode(logger.Info),
})
V1 可以使用 db.SetLogger() 需要实现函数
type logger interface {
Print(v ...interface{})
}
自定义日志输出
package main
import (
"fmt"
"github.com/jinzhu/gorm"
_ "github.com/jinzhu/gorm/dialects/mysql"
log "github.com/sirupsen/logrus"
"os"
"time"
)
type GormLogger struct{}
func (*GormLogger) Print(v ...interface{}) {
switch v[0] {
case "sql":
log.WithFields(
log.Fields{
"module": "gorm",
"type": "sql",
"rows_returned": v[5],
"src": v[1],
"values": v[4],
"duration": v[2],
},
).Info(v[3])
case "log":
log.WithFields(log.Fields{"module": "gorm", "type": "log"}).Print(v[2])
}
}
func main() {
var err error
dataSourceName := "root:@tcp(localhost:3306)/?parseTime=True"
db, err := gorm.Open("mysql", dataSourceName)
if err != nil {
fmt.Println(err)
panic("failed to connect database")
}
db.SetLogger(&GormLogger{})
db.LogMode(true)
Formatter := new(log.TextFormatter)
log.SetFormatter(Formatter)
Formatter.FullTimestamp = true
//log.SetOutput(os.Stdout)
file := time.Now().Format("20060102") + ".txt"
logFile, err := os.OpenFile(file, os.O_RDWR|os.O_CREATE|os.O_APPEND, 0766)
if nil != err {
panic(err)
}
log.SetOutput(logFile)
log.SetReportCaller(true)
var res []map[string]string
db.Table("emergency_meeting_user").Where("id=?", 1).Find(&res)
}
本文来自博客园,作者:vx_guanchaoguo0,转载请注明原文链接:https://www.cnblogs.com/guanchaoguo/p/16448416.html