我之前使用 slf4j-api、logback-core 和 logback-classic 包实现了 OSGI 日志记录到文件。
我现在想在一个单独的包中拦截日志调用(以在网页 servlet 中显示它们)。本博客上的本教程建议构建 org.slf4j.impl 的自定义实现,以将消息传递给日志服务。(这很好用!)
我遇到的问题是,我还想使用 logback 将日志消息保存到文件中,而我们自定义的 org.slf4j.impl 实现是 OSGI 中的一个捆绑包,可防止使用 org.slf4j.impl 的 logback 实现。
我认为这可能是因为在本教程中,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>