genmai で go-sql-proxy つかってクエリーログだしてみた
import (
"database/sql"
"database/sql/driver"
"github.com/go-sql-driver/mysql"
"github.com/golang/glog"
"github.com/naoina/genmai"
"github.com/shogo82148/go-sql-proxy"
)
func SetProxy(driverName string) {
sql.Register(driverName, proxy.NewProxy(&mysql.MySQLDriver{}, &proxy.Hooks{
Exec: func(_ interface{}, stmt *proxy.Stmt, args []driver.Value, result driver.Result) error {
glog.Errorf("Exec: %s; args = %v\n", stmt.QueryString, args)
return nil
},
Query: func(_ interface{}, stmt *proxy.Stmt, args []driver.Value, rows driver.Rows) error {
glog.Errorf("Query: %s; args = %v\n", stmt.QueryString, args)
return nil
},
}))
}
type TracedMySQLDialect struct {
genmai.MySQLDialect
}
func (d *TracedMySQLDialect) Name() string {
return "mysql-tracer"
}
func connectDB(dsn string, trace bool) *genmai.DB {
var db *genmai.DB
var dialect genmai.Dialect
if trace {
SetProxy("mysql-tracer")
dialect = &TracedMySQLDialect{}
} else {
dialect = &genmai.MySQLDialect{}
}
db, err := genmai.New(dialect, dsn)
if err != nil {
glog.Fatal(err)
}
return db
}
✧\\ g( 'ω' )o //✧