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

1. 运行环境#

go 1.21
gin & gorm

2. 问题描述?#

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

讨论数量: 5

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

1年前 评论
  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,
     })
1年前 评论

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)
}
1年前 评论
xyyx (楼主) 1年前
1112 (作者) 1年前