0

私はファイルのあるプロジェクトa-confを持っていsrc/main/resources/logback/conf/a/CommonAppenders.xmlます:

<included>
    <appender name="FILE" class="FileAppender" />
</included>

a-runableまた、私は次をインポートするlogback.xmlconfigを持つ別のプロジェクトを持っていCommonAppenders.xmlます:

<configuration>
    <!-- this is classpath import -->
    <include resource="logback/conf/a/CommonAppenders.xml" />
    ...
</configuration>

a-runableすべての依存関係(そのうちの1つ)が含まれているスタンドアロンのjarで、a-confまたはOSGiバンドルとしてコンパイルできます。スタンドアロンアプリを実行すると、すべて問題ありません。ログファイルはで指定されたとおりに表示されますCommonAppenders.xml。しかし、OSGiコンテナーを実行すると、ログファイルは作成されません。OSGiコンテナ内のすべてのバンドルには独自のクラスローダーがあるため、ログバックにはクラスパスからのリソースを含めることはできないと思います(ログバックClassLoader.getResource()はファイルをインクルードするために使用します)。

チェックインExport-Package: logback.conf.aしましたa-conf.jar/META-INF/MANIFEST.MF(これはMavenバンドルプラグインによって実行されます)-問題ありません。効果なしで追加Import-Package: logback.conf.aされましたa-runable

何ができるかわかりません(変更するコードはなく、構成だけです)。どんな助けでも大歓迎です。

PSここでも同様の問題が見つかりましたlogback.xmlが、すでにクラスパスにあり、独自のアペンダーは正常に機能します。FileNotFoundExceptionまた、既存のログにsがありません。

4

1 に答える 1

1

デフォルトでは、リスナーを設定しない場合、Logbackの起動エラーは単にドロップされると思います(しかし、私は間違ったことを覚えているかもしれません)。重要なのは、a-confがlogback.jarを含むバンドルのフラグメントである必要がある可能性が高いことです。それは私がいくつかの自作のアペンダーを持っている私のバンドルのためにしたことです。

起動エラーをOSGiコンテナーに出力するようにLogbackが事前構成されているセットアップを確認するには、Pax-Logger1.7- https://github.com/ops4j/org.ops4j.pax.logging/を参照してください。 tree / master / pax-logging-logback

于 2012-05-25T01:10:28.000 に答える