Включить файл свойств log4j в hibernate, чтобы показать запрос со значением вместо вопросительного знака
У меня есть файл crearte log4j.properties, как показано ниже:
log4j.logger.org.hibernate=INFO, hb
log4j.logger.org.hibernate.SQL=DEBUG
log4j.logger.org.hibernate.type=TRACE
log4j.logger.org.hibernate.hql.ast.AST=info
log4j.logger.org.hibernate.tool.hbm2ddl=warn
log4j.logger.org.hibernate.hql=debug
log4j.logger.org.hibernate.cache=info
log4j.logger.org.hibernate.jdbc=debug
log4j.appender.hb=org.apache.log4j.ConsoleAppender
log4j.appender.hb.layout=org.apache.log4j.PatternLayout
log4j.appender.hb.layout.ConversionPattern=HibernateLog --> %d{HH:mm:ss} %-5p %c - %m%n
log4j.appender.hb.Threshold=TRACE
Может ли кто-нибудь помочь мне включить его в файл hibernate.cfg.xml
? Мне жаль, что я действительно не знаю, как работает log4j. Я создаю это для отображения моего запроса на спящий режим с value
вместо ?
, но все же он отображает ?
ничего не меняется, поэтому мне нужно продолжить дальше?
Я взял здесь ссылку Hibernate show real SQL
Ответы
Ответ 1
Свойство 'show_sql' в вашем файле hibernate.cfg.xml заставляет запросы печататься непосредственно на консоли.
Log4j позволяет выводить данные в любом месте от консоли до файла на сетевые порты в базы данных.
Но простая конфигурация, которую у вас есть, также должна печататься на консоли. Поэтому сначала удалите свойство show_sql, чтобы увидеть, что Log4j вообще что-то помещает в консоль.
Если это не работает, это показывает, что Log4j настроен неправильно. Если вы используете hibernate > 3.5, он использует slf4j api, который по умолчанию использует logback вместо log4j.
Вы можете легко переключиться на log4j, удалив баночки из вашего пути к классам и добавив вместо этого slf4j-log4j12.jar и log4j.jar.
Трассировка Log4j также печатает запросы с помощью '?', но также печатает привязки параметров, то есть, что '?' будет заменен драйвером базы данных или сервером.
Ответ 2
Пожалуйста, обратитесь к справочной системе hibernate в соответствии с вашей версией. Вот 3.3 Ссылка
Изменить: -
Ответ 3
В большинстве случаев должно быть достаточно включить log4j.properties
в путь класса приложения.
См. Как правильно инициализировать log4j?.
Эта ссылка уже предлагает, что вы должны искать связанные значения sql param, а не в тексте sql, в отдельных операторах журналов, например:
TRACE [BasicBinder] binding parameter [1] as [VARCHAR] - john doe
.
Но я рекомендую придерживаться log4jdbc. Он довольно прост в использовании. И он способен встроить значения параметров запроса в напечатанный текст sql.
Ответ 4
Добавьте это также
<property name="show_sql">true</property>
<property name="format_sql">true</property>
<property name="use_sql_comments">true</property>
ваша проблема будет исправлена.
Ответ 5
Не нужно добавлять в hibernate.cfg.xml, просто поместите его в путь к классам и выполните действия, указанные в этой ссылке.
ссылку: - http://makecodeeasy.blogspot.in/2013/03/logger-in-spring-web-application.html
Ответ 6
Вы не можете распечатать значения inline. Hibernate всегда будет печатать? при регистрации запросов. Результат регистрации org.hibernate.type на уровне DEBUG показывает значения и типы, которые используются для замены этих вопросительных знаков.
Ответ 7
Мне нравится sql logging с прокси-сервером jdbcdslog гораздо больше, чем ведение журнала спящего режима.
Журнал SQL, который передается с базой данных
Ответ 8
В моем случае он не был hibernate.cfg.xml, это был файл log4j.xml, где я поместил код, указанный @jdev
< свойство name= "show_sql" > true
Показывает SQL-запросы
< свойство name= "format_sql" > true
Отформатируйте запрос, отображаемый на консоли
< свойство name= "use_sql_comments" > true
комментарии будут добавлены к запросам
Если ваш проект имеет 1000 запросов на печать на консоли, сделайте другие ложными: < свойство name= "show_sql" > true < свойство name= "format_sql" > false < свойство name= "use_sql_comments" > false
ИЛИ напишите appender в log4j.xml, который я сделал в моем проекте, просто для того, чтобы написать все SQL-запросы в отдельном текстовом файле, который указан здесь:
Настройка ведения журнала Hibernate с использованием файла конфигурации XML Log4j?