この質問に関連しています。Glassfish が slf4j をアプリケーションにエクスポートし、ロギング ソリューションをオーバーライドしているようです。Glassfish のロギングを無効にして、独自のロギング ソリューションを優先させることはできますか? 検索した結果、logging.properties を使用してログを変更する方法しか見つかりませんでした。
私は現在の実装と結婚していませんが、それを機能させることに興味があります。
ありがとう。
他の回答で示唆されているように、委任する前に最初に子クラスローダーを使用するようにGlassFishを構成してみてください。でsun-web.xml
:
<sun-web-app>
<class-loader delegate="false"/>
</sun-web-app>
しかし、これが機能する場合、これは実際の解決策よりも回避策です。アプリケーションは、 bean-validation.jarおよびweld-osgi-bundle.jarのSLF4Jバインディングによって汚染されるべきではありません(少なくとも私はそう信じています)。あなたは多分問題を提起する必要があります。
更新:アーカイブの場合、推奨される回避策は機能しません。しかし、私は問題を再現することができませんでした。
簡単に言えば、Glassfish は厄介なロガー調整を行い、System.out と System.err を独自のログにリダイレクトします。私はそれを止めることはできませんでしたが、slf4j ライブラリをクラスパスの早い段階で配置し、Glassfish の logging.properties を編集することで、すべてのサーバーとアプリケーションのログ メッセージを 1 つの slf4j ログに収集する方法を見つけました。
長い回答については、このブログ投稿を参照してください。