log4jdbc PreparedStatement.toString () - PullRequest
3 голосов
/ 11 июня 2011

Я пытаюсь получить оператор SQL после включения переменных, используя каркас log4jdbc. Пока он ловит и распечатывает необходимую информацию, но также некоторые вещи, которые мне не нужны:

11.06.2011 10:49:40 net.sf.log4jdbc.Slf4jSpyLogDelegator connectionOpened
INFO: 1. Connection opened
11.06.2011 10:49:40 net.sf.log4jdbc.Slf4jSpyLogDelegator methodReturned
INFO: 1. Connection.new Connection returned 
11.06.2011 10:49:40 net.sf.log4jdbc.Slf4jSpyLogDelegator methodReturned
INFO: 1. PreparedStatement.new PreparedStatement returned 
11.06.2011 10:49:40 net.sf.log4jdbc.Slf4jSpyLogDelegator methodReturned
INFO: 1. Connection.prepareStatement(INSERT INTO `xxx` (`y`, `y`, `y`, `y`, `y`, `y`) VALUES (NOW(), ?, ?, ?, ?, ?, ?) ) returned net.sf.log4jdbc.PreparedStatementSpy@13043d2
11.06.2011 10:49:40 net.sf.log4jdbc.Slf4jSpyLogDelegator methodReturned
INFO: 1. PreparedStatement.setInt(1, 0) returned 
11.06.2011 10:49:40 net.sf.log4jdbc.Slf4jSpyLogDelegator methodReturned
INFO: 1. PreparedStatement.setInt(2, 2) returned 
11.06.2011 10:49:40 net.sf.log4jdbc.Slf4jSpyLogDelegator methodReturned
INFO: 1. PreparedStatement.setLong(3, 1426656) returned 
11.06.2011 10:49:40 net.sf.log4jdbc.Slf4jSpyLogDelegator methodReturned
INFO: 1. PreparedStatement.setLong(4, 5177344) returned 
11.06.2011 10:49:40 net.sf.log4jdbc.Slf4jSpyLogDelegator methodReturned
INFO: 1. PreparedStatement.setInt(5, 12) returned 
11.06.2011 10:49:40 net.sf.log4jdbc.Slf4jSpyLogDelegator methodReturned
INFO: 1. PreparedStatement.setInt(6, 1) returned
2011-06-11 10:49:40,993;net.sf.log4jdbc.PreparedStatementSpy@13043d2;
11.06.2011 10:49:40 net.sf.log4jdbc.Slf4jSpyLogDelegator sqlOccured
INFO: INSERT INTO `xxx` (`y`, y`, `y`, `y`, `y`, `y`, `y`) VALUES (NOW(), 0, 2, 1426656, 5177344, 12, 1) 

Как я могу отфильтровать записи и показать только фактическую, последнюю, запись?

1 Ответ

3 голосов
/ 11 июня 2011

Просматривая источники log4jdbc, я могу сделать вывод, что вся регистрация ведется с помощью slf4j и делегирована фактической реализации средства ведения журнала, используемой вашим приложением.на самом деле используется в вашей среде.Это будет зависеть от вашего сервера приложений (я понял это из вашего комментария).Как правило, серверы приложений используют либо log4j, либо java.util.logging.

Вам потребуется настроить один из этих регистраторов, чтобы убедиться, что включен только регистратор jdbc.sqlonly;другие регистраторы, упомянутые на странице log4jdbc , должны быть отключены, или для их уровней ведения журнала должно быть задано высокое значение.Если log4j используется, следующий фрагмент (из примера файла свойств log4j , размещенного на сайте log4jdbc), является наиболее важной частью вашей конфигурации регистратора:

! Log only the SQL that is executed.
log4j.logger.jdbc.sqlonly=DEBUG,sql
log4j.additivity.jdbc.sqlonly=false

АналогИзменение конфигурации должно быть выполнено, если используется java.util.logging.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...