2016-02-19 32 views
-1

我有一個使用Solrj訪問遠程solr服務器的Java應用程序。它是用Maven和Spring構建的。它的設置如下。如何在solrj中記錄完整的URL?

Solr的實例化服務器對象,並將其連接到一個AutocompleteSolrTemplate豆(自定義):

<solr:solr-server id="solrServer" url="${solr.host}" maxConnections="1500" timeout="2000"/> 
<bean id="customSolrTemplateEncounter" class="com.domain.common.solr.AutocompleteSolrTemplate"> 
    <constructor-arg ref="solrServer"/> 
    <constructor-arg value="encounterAutocomplete"/> 
</bean> 


public class AutocompleteSolrTemplate extends SolrTemplate { 
    private static final Logger log = Logger.getLogger(AutocompleteSolrTemplate.class); 

    public AutocompleteSolrTemplate(final SolrServer solrServer, final String core) { 
     super(solrServer, core); 
    } 

    final QueryResponse runSolrQuery(final SolrQuery solrQuery) { 
     return execute(new SolrCallback<QueryResponse>() { 
      @Override 
      public QueryResponse doInSolr(final SolrServer solrServer) throws SolrServerException, IOException { 

      log.debug("Solr request:\n\t" + RequestUtil.URLDecode(solrQuery.toString())); 
       return solrServer.query(solrQuery, METHOD.POST); 
      } 
     }); 
    } 
} 

這樣我就可以輕鬆登錄Solr的要求同上,但我怎麼日誌的完整URL Solr的?主機是一個在應用程序加載$ {solr.host}時被替換的屬性,但是爲了調試目的而記錄完整的URL(包括主機)會很好。

任何幫助?

回答

1

您所創建的AutocompleteSolrTemplate爲:

<bean id="customSolrTemplateEncounter" class="com.domain.common.solr.AutocompleteSolrTemplate"> 
    <constructor-arg ref="solrServer"/> 
    <constructor-arg value="encounterAutocomplete"/> 
</bean> 

爲什麼你不能只是簡單的增加一個構造函數ARG並通過Solr的URL它讓你需要,你可以登錄它!

public AutocompleteSolrTemplate(final SolrServer solrServer, final String core, final String solrUrl) { 
     //Log the URL here!! 
     super(solrServer, core); 
    }