読者です 読者をやめる 読者になる 読者になる

【Go】gormで実行したsqlをファイルへログ出力する方法メモ

開発時またはリリース後もしばらくはSQLは全てログに残しておきたいのでそのやり方を調べたのでメモ。

http://jinzhu.me/gorm/advanced.html#logger
ドキュメントにそれっぽいのがあった

package main

import (
  "log"
  "os"                                                                                                                                                                                                             
  
  "github.com/jinzhu/gorm"
  _ "github.com/jinzhu/gorm/dialects/mysql"
)

func main() {
  db, err := gorm.Open("mysql", "user:pass@tcp(host:port)/db_name")
  if err != nil {
    panic(err)
  }
  defer db.Close()

  // 出力先
  file, err := os.OpenFile("/path/to/log", os.O_RDWR|os.O_CREATE|os.O_APPEND, 0666)
  if err != nil {
    panic(err)
  }
  log.SetOutput(file)

  // ★ログ設定
  db.LogMode(true)
  db.SetLogger(log.New(file, "", 0))

  ・・・
}

カスタマイズとかはもう少し余裕あったら。
他の人の記事見てると標準のlogパッケージってあんまり使わないのか...?

とりあえず以上です