【備忘録】SQLBoilerのデバッグログをzap経由で出力する

SQLBoilerでは、Debug Loggingという機能があり、これを有効にするとSQLクエリが実行されるたびに標準出力されます。

boil.DebugMode = true

このデバッグログの出力先はデフォルトでos.Stdoutになっていますがboil.DebugWriterを使用することで自由に上書きすることができます。

この記事では、Goのロギングライブラリとして有名なzapでこのログを出力するようにします。

TL;DR

stdOutLogger, err := zap.NewStdLogAt(L, zapcore.DebugLevel)
if err != nil {
    panic(err)
}
boil.DebugMode = true
boil.DebugWriter = stdOutLogger.Writer()

NewStdLogAtで、指定したレベルのstdOutLoggerを取得してboil.DebugWriterに渡せばOKです。以下のような出力になります。

実行例