1. ホーム
  2. xml

[解決済み] Log4j XML config ファイルを使用して Hibernate ロギングを設定する?

2023-04-19 10:37:36

質問

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

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

もし誰かが情報または文書へのリンクを知っているならば、それは感謝されます。

EDITです。

明確にするために、私は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>

ログは問題なく動作しますが、現在私のログを溢れさせているので、アプリケーション レベルのログから分離する方法で、hibernate ログをステップダウンして制御する方法を探しています。これを行うために環境設定ファイルを使用する例を見つけたのですが、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" />

注意: ほとんどのロガーは 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>

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