2012-09-24 65 views
2

我正在使用SolrJ來實現單元測試的嵌入式solr服務器。如何使用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

也許一些示例代碼和示例錯誤輸出會有所幫助。 –

+0

我只想關閉SolrJ嵌入式服務器中的日誌記錄,以便Maven不顯示它。 –

+0

我懷疑你的問題是由同時配置2個活動日誌實現引起的。你配置了哪些日誌框架?這是您的POM文件的副本真正幫助的地方..... –

回答

1

Solr的維基解釋說,SLF4J是版本> 1.4

使用的日誌框架

你有E不提供項目的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 

這些都不是日誌實現罐子。您會注意到SolrJ添加了「jcl-over-slf4j」,以確保公共日誌API調用被重定向到SLF4J。

要完全禁用SLF4J日誌,添加特殊的NOP依賴性:

<dependency> 
    <groupId>org.slf4j</groupId> 
    <artifactId>slf4j-nop</artifactId> 
    <version>1.6.1</version> 
    <scope>runtime</scope> 
</dependency> 

注聲明範圍。編譯代碼時不需要記錄實現jar,如果另一個項目使用項目的POM,則會導致問題。