我目前正在尝试使用SLF4J作为Eclipse Orbit项目中的捆绑包,在基于Eclipse的产品中设置日志记录工具。
我详细使用:
org.slf4j.api
ch.qos.logback.classic
ch.qos.logback.core
ch.qos.logback.slf4j
当我尝试使用SLF4J log api运行测试用例时,在Tycho构建中我收到错误消息
19:05:50 SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
19:05:50 SLF4J: Defaulting to no-operation (NOP) logger implementation
19:05:50 SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
Surefire仅使用Eclipse产品的目标平台和插件Manifest.MF文件来检测依赖项。由于ch.qos.logback.slf4j是一个片段,因此不可能在Manifest中直接依赖。
我的假设是在测试执行期间片段不是运行时配置的一部分。
我希望我的问题不是太愚蠢,但是如何配置环境以便将片段添加到运行时配置中并且SLF4J可以解决对StaticLoggerBinder的请求?
答案 0 :(得分:0)
我的假设是在测试执行期间片段不是运行时配置的一部分。
我不是slf4j专家,但它听起来是问题的根源。你需要以某种方式指定你想要的slf4j背后的实现。
顺便说一下,你的产品会遇到同样的问题。你如何解决那里的问题?对这两个问题的建议是创建(或重复使用)引用您想要的片段的功能。一旦你有这样的功能,你可以
将其包含在您的产品中,以确保日志安装中的日志记录工作正常,
将它包含在您的测试运行时中,以使日志记录在那里工作。您可以使用以下配置执行此操作:
<plugin>
<groupId>org.eclipse.tycho</groupId>
<artifactId>target-platform-configuration</artifactId>
<version>${tycho-version}</version>
<configuration>
<dependency-resolution>
<extraRequirements>
<requirement>
<type>eclipse-feature</type>
<id>feature-referencing-the-logging-implementation-fragment</id>
<versionRange>0.0.0</versionRange>
</requirement>
</extraRequirements>
</dependency-resolution>
</configuration>
</plugin>
答案 1 :(得分:0)
虽然他是一个老帖子,我最近遇到了同样的问题,并希望我的回答会有所帮助。解决方案是将ch.qos.logback.slf4j片段的jar添加到JUnit测试类路径中。您可能希望添加驻留在eclipse / plugins文件夹中的jar,以确保该版本与eclipse安装中的插件匹配。