如何在 solrj 中记录完整的 URL?
How do I log the full URL in solrj?
我有一个 Java 应用程序,它使用 Solrj 访问远程 solr 服务器。它是用 Maven 和 Spring 构建的。设置如下。
实例化 solr 服务器对象并将其连接到 AutocompleteSolrTemplate bean(自定义):
<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 请求,但是如何记录完整的 solr URL?主机是一个 属性,会在应用程序加载 ${solr.host} 时被替换,但为了调试目的最好记录包括主机在内的完整 URL。
有什么帮助吗?
您正在创建 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);
}
我有一个 Java 应用程序,它使用 Solrj 访问远程 solr 服务器。它是用 Maven 和 Spring 构建的。设置如下。
实例化 solr 服务器对象并将其连接到 AutocompleteSolrTemplate bean(自定义):
<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 请求,但是如何记录完整的 solr URL?主机是一个 属性,会在应用程序加载 ${solr.host} 时被替换,但为了调试目的最好记录包括主机在内的完整 URL。
有什么帮助吗?
您正在创建 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);
}