サーバーに送信されたすべてのリクエストをアクセスログで確認できます。$ TOMCAT_HOME / conf/server.xmlのAccessLogValveをコメントアウトするだけです。
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log." suffix=".txt" pattern="common" resolveHosts="false"/>
4xxリクエストをログに記録する方法はありませんが、次の説明のようにソースコードをハックします。
org.apache.solr.servlet.SolrDispatchFilter.java * sendError *メソッドのテストコード条件を削除します。
protected void sendError(HttpServletResponse res, Throwable ex) throws IOException {
int code=500;
String trace = "";
if( ex instanceof SolrException ) {
code = ((SolrException)ex).code();
}
// For any regular code, don't include the stack trace
if( code == 500 || code < 100 ) {
StringWriter sw = new StringWriter();
ex.printStackTrace(new PrintWriter(sw));
trace = "\n\n"+sw.toString();
SolrException.logOnce(log,null,ex );
// non standard codes have undefined results with various servers
if( code < 100 ) {
log.warn( "invalid return code: "+code );
code = 500;
}
}
res.sendError( code, ex.getMessage() + trace );
}
コンパイル後、新しいapache-solr-core-*。jarをWEB-INF / libに配置し、Webコンテナーを再起動する必要があります。以下のようなエラーがすべて表示されます。
2011年9月22日17:29:18org.apache.solr.common.SolrExceptionログ重大:org.apache.solr.common.SolrException:不明なハンドラー:org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter .java:227)org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)atorg.apache.catalina。 core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)でorg.apache.catalinaで。org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)のvalves.AccessLogValve.invoke(AccessLogValve.java:555)org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298) org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:857)at org.apache.coyote.http11.Http11Protocol $ Http11ConnectionHandler.process(Http11Protocol.java:588)at org.apache.tomcat.util.net .JIoEndpoint $ Worker.run(JIoEndpoint.java:489)at java.lang.Thread.run(Thread.java:662)process(Http11Processor.java:857)at org.apache.coyote.http11.Http11Protocol $ Http11ConnectionHandler.process(Http11Protocol.java:588)at org.apache.tomcat.util.net.JIoEndpoint $ Worker.run(JIoEndpoint.java: 489)java.lang.Thread.run(Thread.java:662)でprocess(Http11Processor.java:857)at org.apache.coyote.http11.Http11Protocol $ Http11ConnectionHandler.process(Http11Protocol.java:588)at org.apache.tomcat.util.net.JIoEndpoint $ Worker.run(JIoEndpoint.java: 489)java.lang.Thread.run(Thread.java:662)で