0

Glassfish3.1.2のEARファイルにデプロイされた新しいプロジェクトでEclipselink2.3.0を使用しています。

これらはすべて、persistence.xmlで定義されているプロパティです。

<property name="eclipselink.target-database" value="MySQL"/>
<property name="eclipselink.logging.logger" value="DefaultLogger"/>
<property name="eclipselink.logging.file" value="\logs\eclipselink.log"/>
<property name="eclipselink.logging.level" value="FINEST"/>
<property name="eclipselink.logging.parameters" value="true"/>
<property name="eclipselink.logging.timestamp" value="true"/>
<property name="eclipselink.logging.thread" value="true"/>
<property name="eclipselink.logging.session" value="true"/>
<property name="eclipselink.logging.exceptions" value="true"/>

eclipselink.logging.fileを除いて、すべてのプロパティは期待どおりに機能します。ファイル「\logs\ eclipselink.log」が作成されますが、常に空であり、ログ出力はstdoutに送られます。

DefaultLoggerからJavaLoggerに変更し、ファイル名を逆方向のスラッシュなどに変更してみました。試行すると、ログファイルが空になり、ログ出力がstdoutになります。

なぜこれが起こっているのかについてのアイデアはありますか?EclipseLinkがプロパティを正しく読み取り、ファイルを作成しているように見えますが、どこかで出力がstdoutにリダイレクトされています。

PS EARプロジェクトにはpersistence.xmlが1つだけあり、これはGlassfishインスタンスにデプロイされた唯一のプロジェクトです。

4

3 に答える 3

1

プロパティを処理するコードを見ると、バグの可能性があります。管理対象またはアプリケーション管理の永続性ユニットを使用していますか?

私の推測では、DefaultSessionLogの独自のサブクラスを作成すると、ファイルプロパティが適用されます。SessionCustomizerでログファイルを設定することもできます。

バグを記録してください。

于 2012-05-15T13:20:00.050 に答える
0

次のものを一粒の塩で取ってください、私は覗き見しました、そしてそれを完全に「成長させる」のに時間がかかりませんでした。同じ問題が発生しました。これが私が見つけたものです(これはGlassFishを実行せずに単体テストを行ったため、この場合はJava SEでした)。

DefaultLoggerがstdoutにログを記録しているようです。コードは1つのライターしか処理できないと思いますが、おそらくstdoutは常に最後のライターセットですか?

JavaLoggerを使用すると、最初はeclipselink.logging.fileファイルが作成されますが、何もログインしないことがわかりました。ファイルへのストリームが作成されてJavaLoggerに渡されたためだと思いますが、無視されます。文字通り、すべてをjava.util.loggingシステムに渡すだけだと思います。したがって、私が行う必要があるのは、java.util.loggingプロパティを使用して、出力ファイル名(java.util.logging.FileHandlerを介して)とログの量を制御することでした。

これが私のロギングプロパティのサブセットです(JVMに渡されるか、LogManager.getLogManager()。readConfigurationを使用して手動でロードされます)。

handlers= java.util.logging.FileHandler, java.util.logging.ConsoleHandler
java.util.logging.FileHandler.level = FINEST
java.util.logging.FileHandler.pattern = mylogfile%u.%g.log
java.util.logging.ConsoleHandler.level = FINEST
org.eclipse.persistence.default.level = FINE
org.eclipse.persistence.session.level = FINE

また、persistence.xmlファイルでは、eclipselink.logging.fileを設定しなくなりました。

于 2014-09-12T01:43:46.190 に答える
0

このプロパティは、JavaSE環境で使用される場合に適用されます。

ソース:https ://www.eclipse.org/eclipselink/documentation/2.5/jpa/extensions/p_logging_file.htm

Java EEアプリケーションには、「ServerLogger」があります。

https://wiki.eclipse.org/EclipseLink/Examples/JPA/Logging#Server_Logging

于 2019-02-25T11:26:13.443 に答える