记录 Spring Batch 执行的 SQL 查询
Posted
技术标签:
【中文标题】记录 Spring Batch 执行的 SQL 查询【英文标题】:Log SQL queries executed by Spring Batch 【发布时间】:2018-09-08 10:54:17 【问题描述】:我设法使用以下方法记录 Spring Batch 执行的准备好的语句:
logging.level.org.springframework.jdbc=DEBUG
但这不会显示给 JdbcCursorItemReader 的常规语句。
我尝试添加:
logging.level.java.sql=DEBUG
logging.level.java.sql.Connection=DEBUG
logging.level.java.sql.Statement=DEBUG
logging.level.java.sql.PreparedStatement=DEBUG
logging.level.java.sql.ResultSet=DEBUG
但这并没有成功。
【问题讨论】:
logging.level.org.springframework.batch=DEBUG ? 【参考方案1】:Spring Batch 使用 JDBC,因此在您的配置中添加以下配置会启用 SQL 日志记录:
logging:
level
org.springframework.jdbc.core.JdbcTemplate: debug
这是一个示例输出:
2021-01-19 14:51:37.570 DEBUG 14792 --- [ main] o.s.jdbc.core.JdbcTemplate : Executing prepared SQL query
2021-01-19 14:51:37.571 DEBUG 14792 --- [ main] o.s.jdbc.core.JdbcTemplate : Executing prepared SQL statement [SELECT VERSION FROM BATCH_JOB_EXECUTION WHERE JOB_EXECUTION_ID=?]
【讨论】:
【参考方案2】:JdbcCursorItemReader 的包是 org.springframework.batch.item.database。
相应地更改您的配置:
logging.level.org.springframework.batch.item.database=DEBUG
【讨论】:
这不起作用。即使是更通用的logging.level.org.springframework=DEBUG
也不会显示未准备好的语句。
如果日志记录适用于其他包,则说明包配置错误。仔细检查并确保您定义的是正确的。或者使用 logging.level.org.springframework=DEBUG 并尝试找出正确的包。
我把root设置为debug但是看不到JdbcCursorItemReader生成的SQL日志
使用 TRACE 作为日志记录级别以上是关于记录 Spring Batch 执行的 SQL 查询的主要内容,如果未能解决你的问题,请参考以下文章
Spring-batch - 比较来自 csv 的数据并相应地更新 Salesforce 中的记录
带有 JobParameters 的 Spring Batch SQL 命令
没有可用的“javax.sql.DataSource”类型的合格bean - spring-boot-batch