3

logback を ServiceMix 4.3.0 (karaf 2.1.3) で動作させようとしていますが、うまくいきません。すでにうまく機能させている人はいますか?(任意のバージョンの serviceMix + slf4j + logback)

これが私の状況です。(Logback + slf4j + my App) を tomcat で連携させることができます。ServiceMix でそれらを連携させたいと思います。ServiceMix は OPS4J (org.ops4j.pax.logging) を使用して slf4j (1.5.11) を提供しています。そのため、ServiceMix が提供する slf4j を使用する必要があり (新しい slf4j バンドルをインストールする必要はありません)、次に Logback Core Module (0.9.20)、Logback Classic Module (0.9.20)、jcl-over-slf4j (1.5) をインストールしました。 .11) slf4j と logback を連携させるため。インストールは問題なく、エラーはありませんでした。私のアプリケーションには、外部フォルダーから logback.xml を読み取るためのコード スニペットがあります。

fis = new FileInputStream(System.getProperty("logconf") + "/logback.xml");
LoggerContext lc = (LoggerContext) LoggerFactory.getILoggerFactory();
JoranConfigurator configurator = new JoranConfigurator();
configurator.setContext(lc);
lc.reset();
configurator.doConfigure(fis);

しかし、このコードを実行するたびに、常にこのエラーが発生します:

java.lang.ClassCastException: org.ops4j.pax.logging.slf4j.Slf4jLoggerFactory を ch.qos.logback.classic.LoggerContext にキャストできません

したがって、ServiceMix が提供する slf4j は logback ライブラリでは動作しないと思います。

4

2 に答える 2

3

まだリリースされていない Pax-Logging 1.7 には Logback がサポートされています。https://github.com/ops4j/org.ops4j.pax.loggingを参照して ください。

Pax はロガー ファクトリを意図的にラップして、ロギング プロバイダーのランタイム インジェクションを許可するため、Pax-Logging では機能しません。代わりに、Pax-Logging 1.7 (いつか) を使用する場合は、logback.xml を指す org.ops4j.pax.logging.cfg ファイルを介してログバック構成を行います。

于 2012-04-10T12:44:33.827 に答える
0

同様のエラーが発生し、osgi バンドルでインポートを再編成する必要があることに後で気付きました。ログバック後に slf4j がインポートされたため、このエラーが発生しました。その例外を削除すると、なくなりました。

于 2015-09-23T10:11:08.797 に答える