Fetch the repository succeeded.
package golog
import (
"context"
"fmt"
"gitee.com/leijmdas/gobase/goconfig/common/base/basedto"
"io"
"log"
"os"
"time"
)
// 自定义 Logger 结构体,实现 gorm.io/gorm/logger.Interface
type DbfileLogger struct {
basedto.BaseEntitySingle
file io.Writer
}
func NewDbfileLogger() *DbfileLogger {
return &DbfileLogger{}
}
func (self *DbfileLogger) Print(v ...any) {
InfoDb(v...)
}
func NewFileLogger(filePath string) (*DbfileLogger, error) {
file, err := os.OpenFile(filePath, os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644)
if err != nil {
return nil, err
}
return &DbfileLogger{file: file}, nil
}
// 实现 Trace 方法(记录 SQL)
func (l *DbfileLogger) Trace(ctx context.Context, begin time.Time, fc func() (string, int64), err error) {
sql, _ := fc() // 获取 SQL 语句和影响行数
l.file.Write([]byte(fmt.Sprintf("[%s] SQL: %s\n", time.Since(begin), sql)))
}
// 其他方法按需实现(可留空或简单处理)
func (l *DbfileLogger) Info(ctx context.Context, msg string, data ...interface{}) {
log.New(l.file, "[INFO] ", log.LstdFlags).Println(msg, data)
}
func (l *DbfileLogger) Warn(ctx context.Context, msg string, data ...interface{}) {
log.New(l.file, "[WARN] ", log.LstdFlags).Println(msg, data)
}
func (l *DbfileLogger) Error(ctx context.Context, msg string, data ...interface{}) {
log.New(l.file, "[ERROR] ", log.LstdFlags).Println(msg, data)
}
func (l *DbfileLogger) TraceStart(ctx context.Context, begin time.Time, fc func() (string, int64)) context.Context {
return ctx
}
func (l *DbfileLogger) TraceEnd(ctx context.Context, begin time.Time, err error) {}
// 初始化 GORM 并设置 Logger
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。