【问题标题】:Log SQL queries executed by Spring Batch记录 Spring Batch 执行的 SQL 查询
【发布时间】: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 ?

标签: spring spring-boot spring-batch


【解决方案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 作为日志记录级别