【发布时间】:2021-12-08 20:55:53
【问题描述】:
我想将gorm 日志存储在一个文件中。但是我找不到任何示例或文档。我怎样才能做到这一点?
【问题讨论】:
我想将gorm 日志存储在一个文件中。但是我找不到任何示例或文档。我怎样才能做到这一点?
【问题讨论】:
您可以将*gorm.Config 值传递给gorm.Open()(它实现gorm.Option),您可以在其中指定自定义记录器。
您可以使用logger.New() 创建您的记录器,它允许您传递一个负责记录消息的logger.Writer,例如可以记录到一个文件中。
注意logger.Writer 是一个由标准库的log.Logger 实现的接口。您可以使用log.New() 创建指向文件的标准库记录器。
拼凑:
file, err := os.Create("gorm-log.txt")
if err != nil {
// Handle error
panic(err)
}
// Make sure file is closed before your app shuts down.
fileLogger := logger.New(file, "", log.LstdFlags)
db, err := gorm.Open(sqlite.Open("test.db"), &gorm.Config{
Logger: fileLogger,
})
上面的例子将默认记录器替换为fileLogger,它只记录到文件中。如果你想同时记录到你的控制台(标准输出)和一个文件,你可以使用io.MultiWriter() 创建一个io.Writer 来写入标准输出和文件:
file, err := os.Create("gorm-log.txt")
if err != nil {
// Handle error
panic(err)
}
// Make sure file is closed before your app shuts down.
multiOutput := io.MultiWriter(os.Stdout, file)
multiLogger := logger.New(multiOutput, "", log.LstdFlags)
db, err := gorm.Open(sqlite.Open("test.db"), &gorm.Config{
Logger: multiLogger,
})
在此处阅读有关 gorm 日志记录的更多信息:https://gorm.io/docs/logger.html
【讨论】: