5

hibernate 4 に logback 経由でログを記録させるにはどうすればよいですか? 私はwildfly 8 finalに展開された戦争を持っており、ログバックでslf4jを使用しています。コンソール アペンダーとファイル アペンダーの両方が意図したとおりに機能し、ログのセットアップはアプリケーションで 100% 機能しています。

slf4j + logback を機能させるために私がしたことは次のとおりです。

WEB-INF の jboss-deployment-structure.xml でロギング サブシステムを除外:

<?xml version="1.0" encoding="UTF-8"?>
<jboss-deployment-structure>
    <deployment>
        <exclude-subsystems>
            <subsystem name="logging" />
        </exclude-subsystems>
    </deployment>
</jboss-deployment-structure>

pom に含まれる slf4j と logback の依存関係:

<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
    <version>1.7.6</version>
</dependency>
<dependency>
    <groupId>ch.qos.logback</groupId>
    <artifactId>logback-classic</artifactId>
    <version>1.1.1</version>
</dependency>

org.slf4j.Logger を使用したアプリへのログイン

logback.xml に 3 つのロガーを追加しました。

<logger name="my.package" level="TRACE"/>
<logger name="org.hibernate.type" level="ALL" />
<logger name="org.hibernate" level="TRACE" />

ログに休止状態に関するものは何も表示されません。

休止状態から何かが表示されるのは、persistence.xml に追加するときだけです。

<properties>
    <property name="hibernate.show_sql" value="true"/>
    <property name="hibernate.format_sql" value="true"/>
</properties>

しかし、ルートロガーが trace に設定されていても、ログバックアペンダーではなく、サーバーログとコンソールにログを記録します。. .

ログバック ViewStatusMessagesServlet は正常に見え、登録されている休止状態のロガーを示しています: 2014-02-23 19:02:37 INFO LoggerAction ロガー [org.hibernate.type] のレベルを ALL に設定

2014-02-23 19:02:37 INFO LoggerAction ロガー [org.hibernate] のレベルを TRACE に設定

また、persistence.xml に登録された hibernate.ejb.interceptor でログに記録された準備済みステートメントを取得することもできます。残念ながら、これはクエリパラメータを取得する方法も提供しません

誰でも私を助けることができますか?

4

1 に答える 1

6

Hibernate はデプロイメントの一部ではなく、サーバーの一部であるため、デプロイメントで logback 構成を使用することはできません。Hibernate は常にサーバーのログ設定を使用します。通常、これはログ サブシステムにありますが、削除された場合はlogging.properties、構成ディレクトリ内のファイルによって制御されます。

ログバックを使用するように、少なくともドメインではなく、スタンドアロンのサーバーを構成できる場合があります。私はこれを試していないので、多少の作業が必要です。jboss-logmanager モジュールが起動時に JBoss モジュールによってロードされず、logback がロードされることを確認する必要があります。繰り返しますが、これはうまくいくかもしれませんし、うまくいかないかもしれません :) それを行うと、ロギングを構成するための管理機能がまったく失われます。たとえば、デバッグ ロギングをオンにします。

于 2014-02-24T17:04:42.953 に答える