【问题标题】:Store gorm logs in a file将 gorm 日志存储在文件中
【发布时间】:2021-12-08 20:55:53
【问题描述】:

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

【问题讨论】:

    标签: go go-gorm


    【解决方案1】:

    您可以将*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

    【讨论】:

      猜你喜欢
      • 2016-08-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-30
      • 1970-01-01
      • 2020-03-18
      相关资源
      最近更新 更多