go-sql-driver / go-sql-driver/mysql

feature request: trace log sql query statements

Open
#1,716 0 comments 3 reactions 0 assignees View on GitHub
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

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.