我之前已经使用slf4j-api、logback-core和logback经典包实现了OSGI日志记录到文件。
我现在想截获一个单独的包中的日志调用(在一个网页servlet中显示它们)。this blog的这篇教程建议构建一个自定义的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?
谢谢你的帮忙,
布赖恩
附注:完整的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>发布于 2013-02-06 16:31:33
我建议使用Pax- logging,它为您提供了日志记录所需的一切。只有“缺点”,这取决于你如何看待它,它是由std配置的。log4j属性文件,因为它使用ConfigurationAdmin服务来执行此操作。除此之外,它对各种不同的登录框架,log4j,slf4j,jul等都有很大的帮助。
Pax-Logging
https://stackoverflow.com/questions/14711604
复制相似问题