oracle / oracle-r2dbc

R2DBC Driver for Oracle Database
https://oracle.com
Other
201 stars 42 forks source link

Log SQL parameter values when using spring-boot-starter-data-r2dbc for #152

Open fascynacja opened 2 months ago

fascynacja commented 2 months ago

In my project I am using spring-data-r2bc which connects to an Oracle database. My dependencies are:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-webflux</artifactId>
</dependency>
<dependency>
    <groupId>com.oracle.database.r2dbc</groupId>
    <artifactId>oracle-r2dbc</artifactId>
    <version>1.2.0</version>
</dependency>

I am using ReactiveCrudRepository in order to retrieve the data:

@Query("SELECT DISTINCT * from PRODUCT prod WHERE  regexp_like (prod.number, (:number) )" )
Flux<Product> findByNumberContaining(String number);

I would like to see in the logs what exact SQL is being executed, along with the values of number. I have followed answers from Log values of query parameters in Spring Data R2DBC?, but nothing seems to work.

I am able to see the SQL, but without the parameter values:

o.s.d.r2dbc.core.NamedParameterExpander  : Expanding SQL statement [SELECT DISTINCT * from PRODUCT  prod WHERE  regexp_like (prod.number, (:number) )] to [SELECT DISTINCT * from PRODUCT prod WHERE  regexp_like (prod.number, (:P0_number) )]
o.s.r2dbc.core.DefaultDatabaseClient     : Executing SQL statement [SELECT DISTINCT * from PRODUCT prod WHERE  regexp_like (prod.number, (:P0_number) )  ]

My current properties are full of different settings which suppose to work for others but not for me:


logging.level.org.hibernate.SQL=DEBUG
logging.level.org.springframework.http.codec.json=INFO
logging.level.org.springframework.web.HttpLogging=INFO
logging.level.org.springframework.r2dbc.core.DefaultDatabaseClient=TRACE
logging.level.org.springframework.r2dbc=TRACE
logging.level.io.r2dbc.postgresql.QUERY= DEBUG
logging.level.io.r2dbc.postgresql.PARAM= DEBUG
logging.level.io.r2dbc.oracle.QUERY= DEBUG
logging.level.io.r2dbc.oracle.PARAM= DEBUG

How can I log the value of the parameter: (:number)?

Michael-A-McMahon commented 2 months ago

Oracle R2DBC doesn't include logging. While thelogging.level.io.r2dbc.postgresql.PARAM property may be supported by Postgres R2DBC, but Oracle R2DBC doesn't have an equivalent.

I can see this would be a desirable feature, so let's leave this issue open as a reminder to add it.

fascynacja commented 2 months ago

Dear @Michael-Mc-Mahon Thank you for addressing my question. Yes indeed I have seen that Postrges R2DBC has this property to set so I thought there is similiar one in oracle. Thanks for good work, Agata