Показать детали параметров SQL-запроса при возникновении ошибки - PullRequest
0 голосов
/ 18 января 2019

Я использую Java-приложение с пружинной загрузкой 1.5 и установил уровни журналов, чтобы JDBC (используя jdbctemplate в Spring) SQL-запросы и их параметры регистрировались. База данных, к которой мы подключаемся, - Sybase v15.

logging:
  file: /app/logs/${spring.application.name}.log
  max-history: 10
  level:
    root: INFO
    org.springframework: INFO
    org.springframework.jdbc: DEBUG

Однако мы заметили, что при возникновении исключения подробные журналы параметров (показывающие, какой параметр связан с каким значением) не отображаются, и вместо этого мы получаем сообщение об исключении плюс трассировка стека. Это затрудняет точное определение того, какая область вызывает проблемы. Например, для следующего сообщения действительно требуется информация о параметрах, чтобы понять причину проблемы:

UserRepositoryClient#updateUser(Long,User); content:
{"timestamp":"2019-01-17T09:05:18Z","status":500,"error":"Internal Server Error","exception":"org.springframework.dao.TransientDataAccessResourceException","message":"PreparedStatementCallback; SQL [INSERT INTO myTable VALUES(     ?,     ?,     ?,     ?,     ?,     ?,     ?,     ?,     ?,     ?,     ?,     ?,     ?,     ?,     ?,     ?,     ?,     ?,     ?,     ?,     ?,     ?,     ?,     ?,     ?,     ?,     ?,     ?,     ?,     ?,     ?,     ?,     ?,     ?,     ?,     ?,     ?,     ?,     ?,     ?,     ?,     ?,     ?,     ?,     ?,     ?,     ?,     ?,     ?,     ?)]; Scale error during implicit conversion of DECIMAL value '0.1' to a INT field.\n; nested exception is java.sql.SQLException: Scale error during implicit conversion of DECIMAL value '0.1' to a INT field.\n","path":"/quotes/94379095"}

Какие уровни журналов или настройки мы можем редактировать, чтобы показать информацию о привязке параметров, даже если во время выполнения запроса произошла ошибка?

1 Ответ

0 голосов
/ 13 апреля 2019

Найдены правильные уровни журнала:

org.springframework.jdbc.core.JdbcTemplate: DEBUG #log sql queries
org.springframework.jdbc.core.StatementCreatorUtils: TRACE #Log sql parameter values
...