我之前使用slf4j-api,logback-core和logback-classic软件包实现了对文件的OSGI日志记录。
我现在想在一个单独的包中拦截日志调用(在网页servlet中显示它们)。本教程this blog建议构建org.slf4j.impl的自定义实现,以将消息传递给日志服务。 (这很棒!)
我遇到的问题是我还想使用logback将日志消息保存到文件中,org.slf4j.impl的自定义实现是OSGI中的一个bundle,阻止了org.slf4j.impl的logback实现的使用
我认为这可能是因为在本教程中,org.slf4j.impl和slf4j-api的自定义实现是作为依赖项嵌入的,而不是作为bundle安装的。但是,当我尝试使用
<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?
感谢您的帮助,
布赖恩
P.S。完整的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>
答案 0 :(得分:2)
我建议使用Pax-Logging,它为您提供了记录所需的一切。只有“缺点”,取决于你如何看待它,它由std配置。 log4j属性文件,因为它使用ConfigurationAdmin服务。除此之外,它可以为您提供各种不同的登录框架,log4j,slf4j,jul等...