go-sql-driver / go-sql-driver/mysql
feature request: trace log sql query statements
- Dominant language
- Go
- Stars
- 15.3k
- Forks
- 2.3k
- Avg merge
- 2h 23m
- Merged PRs (30d)
- 10
Description
I need to log the raw SQL statements.
We can specify a custom logger when opening a database:
```go
cfg, _ := mysql.ParseDSN(dsName)
// set a custom logger
tracer := log.New(os.Stdout, "[mysql] ", log.Ldate|log.Ltime|log.Lshortfile)
cfg.Logger = tracer
connector, err := mysql.NewConnector(cfg)
if err != nil {
return err
}
db := sql.OpenDB(connector)
```
But the logger won't log SQL statements from `Exec()` and `Query()`, but only some internal problems. See [mysqlConn.log()](https://github.com/go-sql-driver/mysql/blob/master/connection.go#L54) usage.
Is it possible to add an sql logging in the driver? This may be a flag in a config like `cfg.LogStatements = true` or a separate logger/tracer field `cfg.Tracer` like this implemented in the PGX driver [tracelog](https://github.com/jackc/pgx/blob/master/tracelog/tracelog.go):
```go
config, err := pgxpool.ParseConfig(dsName)
tracer = &tracelog.TraceLog{Logger: myLogger, LogLevel: tracelog.LogLevelInfo}
config.ConnConfig.Tracer = tracer
```
Contributor guide
Assessment
This issue has not been assessed yet.