Настройка ведения журнала Hibernate с помощью файла конфигурации Log4j XML?
Я не смог найти никакой документации о том, как настроить ведение журнала Hibernate с помощью файла конфигурации стиля XML для Log4j.
возможно ли это вообще, или я должен использовать файл конфигурации стиля свойств для управления журналом Hibernate?
Если у кого-то есть какая-либо информация или ссылки на документацию, это было бы оценено.
EDIT:
Просто чтобы уточнить, я ищу пример синтаксиса XML для управления Зимовать.
EDIT2:
Вот что у меня есть в моем файле конфигурации XML.
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
<appender name="console" class="org.apache.log4j.ConsoleAppender">
<param name="Threshold" value="info"/>
<param name="Target" value="System.out"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{ABSOLUTE} [%t] %-5p %c{1} - %m%n"/>
</layout>
</appender>
<appender name="rolling-file" class="org.apache.log4j.RollingFileAppender">
<param name="file" value="Program-Name.log"/>
<param name="MaxFileSize" value="1000KB"/>
<!-- Keep one backup file -->
<param name="MaxBackupIndex" value="4"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d [%t] %-5p %l - %m%n"/>
</layout>
</appender>
<root>
<priority value ="debug" />
<appender-ref ref="console" />
<appender-ref ref="rolling-file" />
</root>
</log4j:configuration>
ведение журнала работает нормально, но я ищу способ уйти и управлять входом в спящий режим, который отделен от моего ведения журнала на уровне приложения, поскольку в настоящее время он заполняет мои журналы. Я нашел примеры использования файла предпочтений для этого, мне просто интересно, как я могу сделать это в XML-файле.
6 ответов:
вот список категорий регистратора:
Category Function org.hibernate.SQL Log all SQL DML statements as they are executed org.hibernate.type Log all JDBC parameters org.hibernate.tool.hbm2ddl Log all SQL DDL statements as they are executed org.hibernate.pretty Log the state of all entities (max 20 entities) associated with the session at flush time org.hibernate.cache Log all second-level cache activity org.hibernate.transaction Log transaction related activity org.hibernate.jdbc Log all JDBC resource acquisition org.hibernate.hql.ast.AST Log HQL and SQL ASTs during query parsing org.hibernate.secure Log all JAAS authorization requests org.hibernate Log everything (a lot of information, but very useful for troubleshooting)формат для вставки в файл конфигурации log4j XML:
<!-- Log all SQL DML statements as they are executed --> <Logger name="org.hibernate.SQL" level="debug" /> <!-- Log all JDBC parameters --> <Logger name="org.hibernate.type" level="debug" /> <!-- Log all SQL DDL statements as they are executed --> <Logger name="org.hibernate.tool.hbm2ddl" level="debug" /> <!-- Log the state of all entities (max 20 entities) associated with the session at flush time --> <Logger name="org.hibernate.pretty" level="debug" /> <!-- Log all second-level cache activity --> <Logger name="org.hibernate.cache" level="debug" /> <!-- Log transaction related activity --> <Logger name="org.hibernate.transaction" level="debug" /> <!-- Log all JDBC resource acquisition --> <Logger name="org.hibernate.jdbc" level="debug" /> <!-- Log HQL and SQL ASTs during query parsing --> <Logger name="org.hibernate.hql.ast.AST" level="debug" /> <!-- Log all JAAS authorization requests --> <Logger name="org.hibernate.secure" level="debug" /> <!-- Log everything (a lot of information, but very useful for troubleshooting) --> <Logger name="org.hibernate" level="debug" />Примечание: большинство лесозаготовителей использовать уровень отладки, тем не менее орг.зимовать.тип использует трассировку. В предыдущих версиях Hibernate org.зимовать.тип также используется DEBUG, но начиная с Hibernate 3 Вы должны установить уровень для трассировки (или все) для просмотра журнала привязки параметров JDBC.
и категория определяется так:
<logger name="org.hibernate"> <level value="ALL" /> <appender-ref ref="FILE"/> </logger>Он должен быть помещен перед корневым элементом.
Локи ' s ответ указывает на Hibernate 3 docs и предоставляет хорошую информацию, но я все еще не получал ожидаемых результатов.
много молотя, размахивая руками и вообще мертвая мышь бежит, наконец, приземлился мне мой сыр.
потому что Hibernate 3 использует простой вход фасад для Java (SLF4J) (по документам),если вы полагаетесь на Log4j 1.2 вы будете и нужны slf4j-log4j12-1.5.10.банку если вы желаете полностью настройка ведения журнала гибернации с помощью файла конфигурации log4j. Надеюсь, это поможет следующему парню.
в ответ на комментарий хомаксто, это то, что у меня есть прямо сейчас.
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"> <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/"> <appender name="console" class="org.apache.log4j.ConsoleAppender"> <param name="Threshold" value="debug"/> <param name="Target" value="System.out"/> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%d{ABSOLUTE} [%t] %-5p %c{1} - %m%n"/> </layout> </appender> <appender name="rolling-file" class="org.apache.log4j.RollingFileAppender"> <param name="file" value="Program-Name.log"/> <param name="MaxFileSize" value="500KB"/> <param name="MaxBackupIndex" value="4"/> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%d [%t] %-5p %l - %m%n"/> </layout> </appender> <logger name="org.hibernate"> <level value="info" /> </logger> <root> <priority value ="debug" /> <appender-ref ref="console" /> <appender-ref ref="rolling-file" /> </root> </log4j:configuration>ключевой частью является
<logger name="org.hibernate"> <level value="info" /> </logger>надеюсь, что это помогает.
вот что я использую:
<logger name="org.hibernate"> <level value="warn"/> </logger> <logger name="org.hibernate.SQL"> <level value="warn"/> </logger> <logger name="org.hibernate.type"> <level value="warn"/> </logger> <root> <priority value="info"/> <appender-ref ref="C1"/> </root>очевидно, мне не нравится видеть сообщения Hibernate ;) -- установите уровень "debug", чтобы получить вывод.
ответы были полезны. После изменения я получил дубликат ведения журнала операторов SQL, один в файле журнала log4j и один на стандартной консоли. Я изменил свою настойчивость.xml-файл, чтобы сказать show_sql в false, чтобы избавиться от ведения журнала из стандартной консоли. Сохранение format_sql true также влияет на файл журнала log4j, поэтому я сохранил это значение.
<persistence xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd" version="2.0"> <persistence-unit name="myUnit" transaction-type="RESOURCE_LOCAL"> <provider>org.hibernate.ejb.HibernatePersistence</provider> <properties> <property name="javax.persistence.jdbc.driver" value="org.hsqldb.jdbcDriver"/> <property name="javax.persistence.jdbc.url" value="jdbc:hsqldb:file:d:\temp\database\cap1000;shutdown=true"></property> <property name="dialect" value="org.hibernate.dialect.HSQLDialect"/> <property name="hibernate.show_sql" value="false"/> <property name="hibernate.format_sql" value="true"/> <property name="hibernate.connection.username" value="sa"/> <property name="hibernate.hbm2ddl.auto" value="create-drop"/> </properties> </persistence-unit> </persistence>
вы можете настроить свой
log4jфайл с тегом категории, как это (с консольным приложением для примера):<appender name="console" class="org.apache.log4j.ConsoleAppender"> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%d{yy-MM-dd HH:mm:ss} %p %c - %m%n" /> </layout> </appender> <category name="org.hibernate"> <priority value="WARN" /> </category> <root> <priority value="INFO" /> <appender-ref ref="console" /> </root>таким образом, каждое предупреждение, ошибка или фатальное сообщение из hibernate будет отображаться, не более того. Кроме того, ваш код и код библиотеки будут на уровне информации (so info, warn, error and fatal)
чтобы изменить уровень журнала библиотеки, просто добавьте категорию, например, в журнал desactive spring info log:
<category name="org.springframework"> <priority value="WARN" /> </category>или с другим приложением, сломать аддитивности (аддитивность значение по умолчанию-true)
<category name="org.springframework" additivity="false"> <priority value="WARN" /> <appender-ref ref="anotherAppender" /> </category>и если вы не хотите, чтобы hibernate регистрировал каждый запрос, установите свойство hibernate
show_sqlдоfalse.
Comments