gin&gorm的日志,可以和应用的日志打在一起吗?

1. 运行环境

go 1.21
gin & gorm

2. 问题描述?

这样顺序下来,同一时间的日志在一起,方便查找问题
目前搜索到的资料,都是自己一个文件(包括stdout)
gin-gonic.com/docs/examples/write-...
gorm.io/docs/logger.html

讨论数量: 5

自己定义一个中间件读写日志呗

7个月前 评论
  1. gin: 用os.open ,采用参数os.O_WRONLY|os.O_CREATE|os.O_APPEND
  2. gorm: 用grom的logger.new, 第一个参数传入比如logrus的New返回对象,然后整个logger作为gorm.open的参数。代码示例如下:
    gormLogger := logger.New(
     logrus.New(),
     logger.Config{
         SlowThreshold:             time.Second, // Slow SQL threshold
         LogLevel:                  logger.Info, // Log level
         IgnoreRecordNotFoundError: true,        // Ignore ErrRecordNotFound error for logger
         ParameterizedQueries:      true,         Don't include params in the SQL log
         Colorful:                  false,        Disable color
       },
     )
     gorm. Open(mysql. Open(Dsn), &gorm. Config{
       Logger: gormLogger,
     })
7个月前 评论

gin的access debug server的日志可以参考StackOverflow Go Gin framework to log in JSON,将日志全部接入logrus。

gorm logger只是一个接口,设置level和级别输出,可以很简单使用logrus封装一个对象,fields数据可以参考默认grom logger。

// https://github.com/go-gorm/gorm/blob/master/logger/logger.go#L62C1-L70C1
// Interface logger interface
type Interface interface {
    LogMode(LogLevel) Interface
    Info(context.Context, string, ...interface{})
    Warn(context.Context, string, ...interface{})
    Error(context.Context, string, ...interface{})
    Trace(ctx context.Context, begin time.Time, fc func() (sql string, rowsAffected int64), err error)
}
7个月前 评论
xyyx (楼主) 7个月前
1112 (作者) 7个月前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!