Hibernate регистрирует слишком много информации - PullRequest
3 голосов
/ 06 августа 2011

У меня есть следующая информация в файле log4j.properties ..

log4j.appender.file = org.apache.log4j.DailyRollingFileAppender
log4j.appender.file.File = C:\\app\\file.log
log4j.appender.file.Threshold = TRACE
log4j.appender.file.DatePattern = '.'yyy-MM-dd
log4j.appender.file.layout = org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern = %d %5p [%C:%M:%L] - %m%n
log4j.rootLogger = DEBUG, file
#HIbernate logging
log4j.logger.org.hibernate.SQL = DEBUG, file
log4j.logger.org.hibernate.type = TRACE, file
log4j.additivity.org.hibernate.SQL = false

Проблема этой конфигурации заключается в том, что она записывает слишком много информации в файл журнала, и файл за короткое время перерастает в МБ. Поэтому мне было интересно, могу ли я что-нибудь сделать, чтобы остановить спящий режим, испортить файл журнала и записать только SQL-оператор выбора и параметры и ничего больше.

1 Ответ

3 голосов
/ 06 августа 2011

Вместо действительно подробного и не интуитивно понятного ведения журнала SQL в спящем режиме вы можете использовать драйвер JDBC Pass through Java, который может регистрировать SQL и / или JDBC calls для других драйверов JDBC.

Преимущество прохождения через драйвер JDBC заключается в том, что в записанном выводе для подготовленных выражений аргументы связывания автоматически вставляются в вывод SQL. Это значительно улучшает читабельность, отладку и размер журнала во многих случаях. Информация о времени SQL может быть сгенерирована при необходимости.

С журналированием hibernate у вас есть логирование, подобное:

 select bs0_.A_REF as A2_7_0_ from B bs0_ where  bs0_.other = 0 and bs0_.A_REF=?  
 TRACE 2011-08-  03 00:30:45,317 binding '123' to parameter: 1

При большом запросе с большим количеством параметров может быть затруднительно заменить все параметры связывания перед выполнением запроса вручную в базе данных.

С помощью прохода через драйвер JDBC вы ведете запись, подобную:

select bs0_.A_REF as A2_7_0_ from B bs0_ where  bs0_.other = 0 and bs0_.A_REF=123  

Все параметры привязки разрешены, и вам просто нужно скопировать и вставить его, чтобы выполнить запрос к базе данных.

Вы можете проверить log4jdbc как хороший проход через драйвер JDBC.
Чтобы отключить ведение журнала в режиме гибернации, обязательно задайте для false свойства hibernate.show_sql в файле конфигурации и всех связанных с SQL регистраторах. См. Конфигурация регистрации раздела справочной документации

...