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)?
I have created a question for this topic in the orcale-r2dbc github page: https://github.com/oracle/oracle-r2dbc/issues/152 The answer from the team is:
Oracle R2DBC doesn't include logging. While the logging.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.
Add a comment or upvote if you would like to see that improvement in the code.