记录 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 中的记录

oracle执行历史查不到执行sql

带有 JobParameters 的 Spring Batch SQL 命令

没有可用的“javax.sql.DataSource”类型的合格bean - spring-boot-batch

Spring Batch:ItemProcessor 不处理所有记录

db2 怎样查一个sql连接执行过的所有语句?