以前、slf4j-api、logback-core、logback-classicバンドルを使用して、ファイルへのOSGIロギングを実装しました。
ここで、ログ呼び出しを別のバンドルでインターセプトしたいと思います(Webページサーブレットに表示するため)。このブログのこのチュートリアルでは、メッセージをログサービスに渡すためにorg.slf4j.implのカスタム実装を構築することを提案しました。(これはうまくいきました!)
私が抱えている問題は、ログバックを使用してログメッセージをファイルに保存したいということです。org.slf4j.implのカスタム実装はOSGIのバンドルであり、org.slf4j.implのログバック実装が使用されないようにします。
これは、チュートリアルでorg.slf4j.implとslf4j-apiのカスタム実装が依存関係として埋め込まれており、バンドルとしてインストールされていないことが原因である可能性があります。しかし、私がこれを試してみると
<Embed-Dependency>slf4j.api_1.7.2.jar, logbackadapter.jar;scope=compile|runtime;inline=false</Embed-Dependency>
<Embed-Transitive>true</Embed-Transitive>
Slf4j-apiは引き続きバンドルとしてインストールされます。誰かがslf4j-apiをバンドルに埋め込んで、logbackによって提供されるエクスポートされたorg.slf4j.implを使用しないようにする方法を知っていますか?
ご協力いただきありがとうございます、
ブライアン
ps完全なpom要素は次のとおりです。
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<version>1.4.3</version>
<extensions>true</extensions>
<configuration>
<instructions>
<Bundle-SymbolicName>${bundle.symbolicName}</Bundle-SymbolicName>
<Bundle-Version>${pom.version}</Bundle-Version>
<Export-Package></Export-Package>
<Private-Package>${bundle.namespace}.internal.*</Private-Package>
<Embed-Dependency>slf4j.api_1.7.2.jar;logbackadapter.jar;scope=compile|runtime;inline=true</Embed-Dependency>
<Embed-Transitive>true</Embed-Transitive>
</instructions>
</configuraiton>
</plugin>
そして、依存関係の要素は次のとおりです。
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.2</version>
<scope>compile</scope>
</dependency>