質問

Log4jのXMLスタイルの構成ファイルを使用してHibernateのログを構成する方法に関するドキュメントを見つけることができませんでした。

これも可能ですか、それともHibernateのロギングを制御するためにプロパティスタイルの構成ファイルを使用していますか?

情報やドキュメントへのリンクがあれば、感謝します。

編集:
明確にするために、Hibernateを制御する実際の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ファイルでこれをどのように行うことができるのか疑問に思っていました。

役に立ちましたか?

解決

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" />

NB:ほとんどのロガーはDEBUGレベルを使用しますが、org.hibernate.typeはTRACEを使用します。以前のバージョンのHibernate org.hibernate.typeもDEBUGを使用していましたが、Hibernate 3では、JDBCパラメーターバインディングロギングを表示するためにレベルをTRACE(またはALL)に設定する必要があります。

そしてカテゴリはそのように指定されます:

<logger name="org.hibernate">
    <level value="ALL" />
    <appender-ref ref="FILE"/>
</logger>

ルート要素の前に配置する必要があります。

他のヒント

Loki answer はHibernate 3のドキュメントを指しており、良い情報を提供しますが、期待した結果が得られませんでした。

多くのスラッシング、腕の振り、一般的な死んだマウスの走りがついに私のチーズを見つけました。

Hibernate 3は Simple Logging Facade for Java (SLF4J)(ドキュメントごと)を使用しているため、< strong> Log4j 1.2に依存している場合、完全にしたい場合は、 s slf4j-log4j12-1.5.10.jar も必要です。 log4j構成ファイルを使用してHibernateロギングを構成します。これが次の人に役立つことを願っています。

homaxtoのコメントに応えて、これが私が今持っているものです。

<?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メッセージを見たくない;)-レベルを&quot; debug&quot;に設定する出力を取得します。

答えは役に立ちました。変更後、log4jログファイルと標準コンソールに1つずつ、SQLステートメントの重複したログが記録されました。 persistence.xmlファイルを変更してshow_sqlをfalseに変更し、標準コンソールからログを削除しました。 format_sqlをtrueに保持すると、log4jログファイルにも影響するため、trueを保持しました。

<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>

したがって、休止状態からのすべての警告、エラー、または致命的なメッセージが表示されます。また、コードとライブラリコードは情報レベルになります(つまり、info、warn、error、fatal)

ライブラリのログレベルを変更するには、たとえば、非アクティブなスプリング情報ログにカテゴリを追加します。

<category name="org.springframework">
    <priority value="WARN" />
</category>

または別のアペンダーを使用して、加法性を破る(加法性のデフォルト値はtrue)

<category name="org.springframework" additivity="false">
    <priority value="WARN" />
    <appender-ref ref="anotherAppender" />
</category>

また、すべてのクエリを休止状態にしたくない場合は、休止状態プロパティ show_sql false に設定します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top