Настройка ведения журнала 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-файле.

637   6  

6 ответов:

от http://docs.jboss.org/hibernate/core/3.3/reference/en/html/session-configuration.html#configuration-logging

вот список категорий регистратора:

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

    Ничего не найдено.