Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
fascynacja opened this issue Sep 10, 2024 · 3 comments
Open

Comments

@fascynacja
Copy link

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
Copy link
Member

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
Copy link
Author

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

@Michael-A-McMahon
Copy link
Member

Oracle R2DBC 1.3.0 updates the Oracle JDBC dependency to 23.6. Users should check out the new diagnosability features available from this release of Oracle JDBC:
https://docs.oracle.com/en/database/oracle/oracle-database/23/jjdbc/JDBC-diagnosability.html#GUID-4925EAAE-580E-4E29-9B9A-84143C01A6DC

My hope is that Oracle JDBC logs enough information so that Oracle R2DBC doesn't need to introduce its own log messages. But if that is not the case, we can use this issue/thread to identify what's missing, and think about the best approach for logging in Oracle R2DBC.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants