2012-01-02 13 views
4

Java EE 6アプリケーションでは、ログフレームワークとしてlogbackとともにslf4jが使用されています。 OpenJpaのSQLトレースをログファイルに追加します。私は、Java EEコンテナとしてのWebSphere Application Server v8.0.0.1を使用WebSphereでのslf4jによるOpenJPAのログ

<property name="openjpa.Log" value="slf4j"/> 

:OpenJPAの-ドキュメントは、私がこれにパラメータを使用することができ、述べています。アプリケーションをサーバーにデプロイする場合、このパラメーターは何も変更されません。私はWebSphere Admin Consoleでログ・レベルを変更できますが、これは正常に動作します。しかし、私はslf4jフレームワークにOpenJpaのログをバイパスすることはできません。

誰もこのような設定を使用して問題を解決しましたか?

Btw。私は知っている、情報センター - 記事http://publib.boulder.ibm.com/infocenter/wasinfo/v8r0/index.jsp?topic=%2Fcom.ibm.websphere.nd.doc%2Finfo%2Fae%2Fae%2Ftejb_jpatroubleshoot.html は、パラメータは無視されると言われていますが、すべてが可能でなければなりませんか?

答えて

0

私はそれを解決しました。

  1. は、OpenJPAのは、ステートメントをログに記録することを言う:

    は行うには4つのものがあります。これは、persistence.xmlのプロパティー・エントリーによって行われます。

  2. Julからログをフェッチする必要があると言ってください。これは、SLF4JでSLF4JBridgeHandlerをインストールすることで実行できます。私はアプリケーションの開始時に呼び出されるServletContextListener経由でブリッジをインストールしました。
  3. JULからすべてのログをログに記録せず、必要なログのみをログに記録するようにログバックを設定します。これは、LogBack-test.xmlにLevelChangePropagatorを追加することによって行われます。
  4. WebSphere TraceServiceにOpenJPAからアプリケーションにログを渡すよう依頼します。これはWebSphere管理コンソールの設定です
0

WAS 8.0に組み込まれているOpenJPAのバージョンはわかりません。

OpenJPA 1.xでは、「slf4j」を使用する可能性はありませんでした。回避策は、アプリケーションにOpenJPAの2.xのソースからクラスorg.apache.openjpa.lib.log.SLF4JLogFactoryをコピーし、それを直接使用していた。

<property name="openjpa.Log" value="org.apache.openjpa.lib.log.SLF4JLogFactory"/> 

あなたは常に直接ファクトリクラス名を指定することができ、短い名前だけで便利なトリックです。

OpenJPA 2.xではSLF4JLogFactoryが存在するため、現在の設定で動作するはずです。他の設定で上書きされた場所に設定したのでしょうか?たとえば、EntityManagerFactoryのpropertyMapを通じてJPAを設定すると、persistence.xmlの設定より優先されます。

+0

お返事ありがとうございます!残念ながら、openjpa.LogパラメータはWebsphere永続化実装によって無視されるようです。私はデフォルトの永続性プロバイダ(com.ibm.websphere.persistence.PersistenceProviderImpl)を使用しています。したがって、データソースを提供するコンテナを使用できます。 –

+0

組み込みのOpenJPAでは、コンテナ提供のデータソースを使用することもできます。これは、これがなければ役に立たないでしょうか? – MaDa

関連する問題