go - 将 gorm 日志存储在文件中

标签 go go-gorm

我想将 gorm 日志存储在文件中。但是我找不到任何示例或文档。我怎样才能做到这一点?

最佳答案

您可以通过 *gorm.Config值为 gorm.Open() (它实现 gorm.Option )您可以在其中指定自定义记录器。

您可以使用 logger.New() 创建记录器它允许您传递 logger.Writer负责记录消息,例如可以记录到文件中。

请注意,logger.Writer 是由标准库的 log.Logger 实现的接口(interface)。 。您可以使用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

关于go - 将 gorm 日志存储在文件中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69673048/

相关文章:

go - 在golang中通过引用初始化函数上的变量

go - 使用 Go-Github 和 http.Transport 时如何设置 HTTP 请求 header ?

go - 如何在指定文件中运行测试用例?

postgresql - 我是否需要使用 gorm (golang) 在数据库中读取和写入两个不同的对象?

reflection - 使用 gorm 库进行反射(reflect)

go - 如何取消转义html字符串中的引号

mysql - 为什么 GORM 不能生成外键?

Gorm 在关联中创建副本

database - Gorm 只返回一个而不是多个结果

安装 go 工具的 go 模块