ソリューションはいくつかの場所で変更が必要で、主にslf4j設定の問題でした。私のアプリケーションには多くの依存関係があり、さまざまなログ実装が導入されています。 Slf4jはすべて一緒に集められるように設計されています。プロセスはしばしばjarファイルを簡単にドロップインしますが、java.util.loggingはもう少し時間がかかります。
slf4j Bridging Legacy APIsページでは、Jerseyによって導入されたJUL依存関係を(ほとんど)どのように結びつけるかについて説明しています。 jul-to-slf4j.jarはすでに含まれていましたが、正しく配線されていませんでした。私はSLF4JBridgeHandler.install()
私のアプリの初期化で実行する必要がありました。また、負のパフォーマンスへの影響についてのページの注意私も、私のlogback.xmlで次のファイルが含まれない限り:
<contextListener class="ch.qos.logback.classic.jul.LevelChangePropagator">
<resetJUL>true</resetJUL>
</contextListener>
私が道のほとんどを得たが、ログevents-- 1の重複を紹介しに行ってきましたslf4jと他方は引き続きstderrになりました。 GoogleはClaus Neilsenのブログ「Bridging java.util.logging to SLF4J」の記事に私を誘導しました。これは、コードの有用スニペット含ま:場所にそれと
// Jersey uses java.util.logging - bridge to slf4
java.util.logging.Logger rootLogger = LogManager.getLogManager().getLogger("");
Handler[] handlers = rootLogger.getHandlers();
for (int i = 0; i < handlers.length; i++) {
rootLogger.removeHandler(handlers[i]);
}
SLF4JBridgeHandler.install();
をlogbackによって指示されるように、私のjsvcの標準エラー出力に現れてたジャージーログは今、きれいにフォーマット、私の丸太の残りの部分と現れています.xml。
あなたはjsvcが何であるか正確に理解しています。問題のエラーメッセージは、自分のアプリケーションからJerseyによって生成され、stderrに送信されます。私はjsvcがstderrをキャッチし、その出力をファイルに出力していると思います。私は、jsvcに達する前にstderrのログ出力をインターセプトするソリューションを探しています。 – phatfingers
私は、Java内から生成されたログデータが、jsvc stderrの出力に表示されていることを私の懸念事項としてより明確に反映するように質問を更新しました。 – phatfingers
@phatfingers、logback.xmlはどこに置いていますか? WebappのWEB-INF/classesフォルダにある場合、Jerseyは独自のログには使用しないことは明らかです。 logging.xml [グローバルクラスパスに入れる](http://logback.qos.ch/faq.html#configFileLocation)を入力して、デフォルトのロギングを設定する必要があります。 –