1 Star 0 Fork 0

water/gobase

Create your Gitee Account
Explore and code with more than 14 million developers,Free private repositories !:)
Sign up
文件
Clone or Download
dbfile_logger.go 1.62 KB
Copy Edit Raw Blame History
leijmdas authored 2025-06-01 08:26 +08:00 . add
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
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/leijmdas/gobase.git
git@gitee.com:leijmdas/gobase.git
leijmdas
gobase
gobase
e3601d1820c0

Search