Add ParameterizedQueries option support for logger, close #5288
This commit is contained in:
		
							parent
							
								
									794edad60e
								
							
						
					
					
						commit
						ddd3cc2502
					
				| @ -132,7 +132,11 @@ func (p *processor) Execute(db *DB) *DB { | ||||
| 
 | ||||
| 	if stmt.SQL.Len() > 0 { | ||||
| 		db.Logger.Trace(stmt.Context, curTime, func() (string, int64) { | ||||
| 			return db.Dialector.Explain(stmt.SQL.String(), stmt.Vars...), db.RowsAffected | ||||
| 			sql, vars := stmt.SQL.String(), stmt.Vars | ||||
| 			if filter, ok := db.Logger.(ParamsFilter); ok { | ||||
| 				sql, vars = filter.ParamsFilter(stmt.Context, stmt.SQL.String(), stmt.Vars...) | ||||
| 			} | ||||
| 			return db.Dialector.Explain(sql, vars...), db.RowsAffected | ||||
| 		}, db.Error) | ||||
| 	} | ||||
| 
 | ||||
|  | ||||
| @ -26,6 +26,10 @@ type Plugin interface { | ||||
| 	Initialize(*DB) error | ||||
| } | ||||
| 
 | ||||
| type ParamsFilter interface { | ||||
| 	ParamsFilter(ctx context.Context, sql string, params ...interface{}) (string, []interface{}) | ||||
| } | ||||
| 
 | ||||
| // ConnPool db conns pool interface
 | ||||
| type ConnPool interface { | ||||
| 	PrepareContext(ctx context.Context, query string) (*sql.Stmt, error) | ||||
|  | ||||
| @ -55,6 +55,7 @@ type Config struct { | ||||
| 	SlowThreshold             time.Duration | ||||
| 	Colorful                  bool | ||||
| 	IgnoreRecordNotFoundError bool | ||||
| 	ParameterizedQueries      bool | ||||
| 	LogLevel                  LogLevel | ||||
| } | ||||
| 
 | ||||
| @ -75,6 +76,7 @@ var ( | ||||
| 		SlowThreshold:             200 * time.Millisecond, | ||||
| 		LogLevel:                  Warn, | ||||
| 		IgnoreRecordNotFoundError: false, | ||||
| 		ParameterizedQueries:      true, | ||||
| 		Colorful:                  true, | ||||
| 	}) | ||||
| 	// Recorder Recorder logger records running SQL into a recorder instance
 | ||||
| @ -181,6 +183,14 @@ func (l logger) Trace(ctx context.Context, begin time.Time, fc func() (string, i | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| // Trace print sql message
 | ||||
| func (l logger) ParamsFilter(ctx context.Context, sql string, params ...interface{}) (string, []interface{}) { | ||||
| 	if l.Config.ParameterizedQueries { | ||||
| 		return sql, nil | ||||
| 	} | ||||
| 	return sql, params | ||||
| } | ||||
| 
 | ||||
| type traceRecorder struct { | ||||
| 	Interface | ||||
| 	BeginAt      time.Time | ||||
|  | ||||
| @ -3,11 +3,14 @@ module gorm.io/gorm/tests | ||||
| go 1.16 | ||||
| 
 | ||||
| require ( | ||||
| 	github.com/go-sql-driver/mysql v1.7.0 // indirect | ||||
| 	github.com/google/uuid v1.3.0 | ||||
| 	github.com/jackc/pgtype v1.13.0 // indirect | ||||
| 	github.com/jinzhu/now v1.1.5 | ||||
| 	github.com/lib/pq v1.10.7 | ||||
| 	github.com/mattn/go-sqlite3 v1.14.16 // indirect | ||||
| 	golang.org/x/crypto v0.3.0 // indirect | ||||
| 	github.com/microsoft/go-mssqldb v0.19.0 // indirect | ||||
| 	golang.org/x/crypto v0.4.0 // indirect | ||||
| 	gorm.io/driver/mysql v1.4.4 | ||||
| 	gorm.io/driver/postgres v1.4.5 | ||||
| 	gorm.io/driver/sqlite v1.4.3 | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Jinzhu
						Jinzhu