-
Notifications
You must be signed in to change notification settings - Fork 38.6k
Description
Abhishek Gupta opened SPR-7782 and commented
In production applications it is imperative that SQL statements and bind parameters be logged at a configurable level for support purposes.
When using the JdbcTemplate spring does currently log both, but sql statements are logged at debug level and parameters are logged in the 'o.s.j.c.StatementCreatorUtils' class at trace level. It is impractical to keep trace level on in a critical (or any) production system - even for a single class. There are other non-important (or non-functional) debug/trace logs that might be in the class that are not required to be logged. Or new ones might be introduced in future versions.
We would want the query/params to be logged at info level but again that might not be suitable for others, so ideally it should be something that is configurable.
The work-around today is ugly, in that we wrap the JdbcTemplate just to be able to log the parameters. Ideally, if there could be a property in the JdbcTemplate that accepts the log level for functional logs (query, params in this case) it would be most helpful. Given that JdbcTemplate is now a total replacement for using any low level jdbc api, and is so popular, it makes sense to have this feature that will give users more control and contribute to the completeness of such a widely used Spring offering.
I am happy to use any other solution you might have that addresses this use-case.
Thanks,
Abhi
P.S. This really applies to other classes too like in the jdbc.object package
Affects: 3.0.5
Issue Links:
- JdbcTemplate parameter and result logging [SPR-9405] #14041 JdbcTemplate parameter and result logging ("is duplicated by")
- Revisit subsystem-oriented logging [SPR-8122] #12774 Revisit subsystem-oriented logging
6 votes, 14 watchers