feat: add log writer for gorm and add New func for log (#155)

* feat: add logger writer for gorm

* feat: fix check cond

* feat: add New func for creating a custom logger

* docs: update changelog
This commit is contained in:
Richard
2024-10-28 22:24:52 +08:00
committed by GitHub
parent 9307c198e4
commit fd50eb5198
4 changed files with 52 additions and 3 deletions

View File

@@ -4,6 +4,7 @@
- feat: support async flush log to disk
- feat: add re-entry and automatic renewal for redis lock
- feat: add gorm logger
- chore: using gorm offical plguin for tracing and metrics
## v1.9.0

View File

@@ -49,7 +49,7 @@ func loadConf() (ret *Config, err error) {
return &cfg, nil
}
// Init init log
// Init init log and return a global logger
func Init(opts ...Option) Logger {
var err error
cfg, err := loadConf()
@@ -72,6 +72,22 @@ func Init(opts ...Option) Logger {
return log
}
// New create a customer logger
func New(opts ...Option) Logger {
var err error
cfg, err := loadConf()
if err != nil {
panic(fmt.Sprintf("log: New load logger conf err: %v", err))
}
l, err := newLoggerWithCallerSkip(cfg, 1, opts...)
if err != nil {
_ = fmt.Errorf("log: New newLoggerWithCallerSkip err: %v", err)
}
return l
}
// GetLogger return a log
func GetLogger() Logger {
return log

View File

@@ -0,0 +1,22 @@
package orm
import (
"fmt"
"github.com/go-eagle/eagle/pkg/log"
"gorm.io/gorm/logger"
)
type LoggerWriter struct {
log log.Logger
}
func NewLogWriter(log log.Logger) logger.Writer {
return &LoggerWriter{
log: log,
}
}
func (l *LoggerWriter) Printf(s string, v ...interface{}) {
l.log.Info(fmt.Sprintf(s, v...))
}

View File

@@ -35,6 +35,8 @@ var (
DBMap = make(map[string]*gorm.DB)
// DBLock database locker
DBLock sync.Mutex
// logWriter log writer
LogWriter logger.Writer
)
// Config database config
@@ -239,9 +241,17 @@ func gormConfig(c *Config) *gorm.Config {
}
// 只打印慢查询
if c.SlowThreshold > 0 {
var writer logger.Writer
//将标准输出作为Writer
writer = log.New(os.Stdout, "\r\n", log.LstdFlags)
// use custom logger
if LogWriter != nil {
writer = LogWriter
}
// new logger with writer
config.Logger = logger.New(
//将标准输出作为Writer
log.New(os.Stdout, "\r\n", log.LstdFlags),
writer,
logger.Config{
//设定慢查询时间阈值
SlowThreshold: c.SlowThreshold, // nolint: golint