Logging from pgx
16 Apr 2021
One way to log SQL queries from pgx
type qLogger struct {
}
func (l *qLogger) Log(ctx context.Context, level pgx.LogLevel, msg string, data map[string]interface{}) {
if level == pgx.LogLevelInfo && msg == "Query" {
fmt.Printf("SQL:\n%s\nARGS:%v\n", data["sql"], data["args"])
}
}
// somewhere in main, presumably...
// For DSN format, see 33.1.1.2, "Connection URIs", of
// https://www.postgresql.org/docs/current/libpq-connect.html
dsn := fmt.Sprintf("postgresql://%s:%s@%s:%s/%s", dbuser, pass, dbhost, dbport, dbname)
config, err := pgx.ParseConfig(dsn)
if err != nil {
return nil, fmt.Errorf("Unable to parse configuration: %w", err)
}
config.Logger = &qLogger{}
conn, err := pgx.ConnectConfig(ctx, config)
if err != nil {
return nil, fmt.Errorf("Unable to establish connection: %w", err)
}