我正在将SolrJ用于我的单元测试的嵌入式solr服务器。
问题是我的maven输出中充满了我不想要的solr日志。例如,我故意在我的测试中触发错误查询。我的测试通过,但很难看到,因为屏幕充满了Solr错误。
我不清楚如何使用SolrJ解决这个问题。我想将此作为我的POM文件的一部分,以便在测试失败时,开发人员可以编辑POM以显示更多信息。
编辑:
Solr以这种方式实例化:
System.setProperty("solr.solr.home", "solr/")
def coreInitter = new CoreContainer.Initializer()
def core = coreInitter.initialize()
this.server = new EmbeddedSolrServer(core, "")
答案 0 :(得分:2)
Solr wiki解释说SLF4J是版本>使用的日志框架。 1.4
您还没有提供项目的POM依赖项,所以我自己创建了:
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>com.myspotontheweb.demo</groupId>
<artifactId>demo</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>org.apache.solr</groupId>
<artifactId>solr-solrj</artifactId>
<version>3.6.1</version>
<exclusions>
<exclusion>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.solr</groupId>
<artifactId>solr-core</artifactId>
<version>3.6.1</version>
</dependency>
</dependencies>
</project>
这有以下依赖树:
$ mvn dependency:tree
..
..
[INFO] com.myspotontheweb.demo:demo:jar:1.0-SNAPSHOT
[INFO] +- org.apache.solr:solr-solrj:jar:3.6.1:compile
[INFO] | +- commons-httpclient:commons-httpclient:jar:3.1:compile
[INFO] | +- commons-io:commons-io:jar:2.1:compile
[INFO] | +- org.codehaus.woodstox:wstx-asl:jar:3.2.7:runtime
[INFO] | +- org.slf4j:jcl-over-slf4j:jar:1.6.1:compile
[INFO] | \- org.slf4j:slf4j-api:jar:1.6.1:compile
[INFO] \- org.apache.solr:solr-core:jar:3.6.1:compile
[INFO] +- org.apache.lucene:lucene-core:jar:3.6.1:compile
[INFO] +- org.apache.lucene:lucene-analyzers:jar:3.6.1:compile
[INFO] +- org.apache.lucene:lucene-highlighter:jar:3.6.1:compile
[INFO] +- org.apache.lucene:lucene-kuromoji:jar:3.6.1:compile
[INFO] +- org.apache.lucene:lucene-memory:jar:3.6.1:compile
[INFO] +- org.apache.lucene:lucene-misc:jar:3.6.1:compile
[INFO] +- org.apache.lucene:lucene-phonetic:jar:3.6.1:compile
[INFO] +- org.apache.lucene:lucene-queries:jar:3.6.1:compile
[INFO] | \- jakarta-regexp:jakarta-regexp:jar:1.4:compile
[INFO] +- org.apache.lucene:lucene-spatial:jar:3.6.1:compile
[INFO] +- org.apache.lucene:lucene-spellchecker:jar:3.6.1:compile
[INFO] +- org.apache.lucene:lucene-grouping:jar:3.6.1:compile
[INFO] +- commons-codec:commons-codec:jar:1.6:compile
[INFO] +- commons-fileupload:commons-fileupload:jar:1.2.1:compile
[INFO] +- commons-lang:commons-lang:jar:2.6:compile
[INFO] +- com.google.guava:guava:jar:r05:compile
[INFO] \- javax.servlet:servlet-api:jar:2.4:compile
这些都不是日志记录实现jar。你会注意到SolrJ已经添加了“jcl-over-slf4j”,以确保将commons记录API调用重定向到SLF4J。
要完全禁用SLF4J日志记录,请添加特殊的NOP依赖项:
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-nop</artifactId>
<version>1.6.1</version>
<scope>runtime</scope>
</dependency>
请注意范围声明。编译代码不需要记录实现jar,如果另一个项目使用项目的POM,可能会导致问题。