solr6.6使用自带jetty启动时,默认只有solr自己的日志,如果需要jetty的access日志,可以按如下方式配置。
本来自带jetty的jetty.xml文件中有如下配置:
<!-- =========================================================== -->
<!-- Configure Request Log -->
<!-- =========================================================== -->
<!--
<Ref id="Handlers">
<Call name="addHandler">
<Arg>
<New id="RequestLog" class="org.eclipse.jetty.server.handler.RequestLogHandler">
<Set name="requestLog">
<New id="RequestLogImpl" class="org.eclipse.jetty.server.NCSARequestLog">
<Set name="filename">
logs/request.yyyy_mm_dd.log
</Set>
<Set name="filenameDateFormat">yyyy_MM_dd</Set>
<Set name="retainDays">90</Set>
<Set name="append">true</Set>
<Set name="extended">false</Set>
<Set name="logCookies">false</Set>
<Set name="LogTimeZone">UTC</Set>
</New>
</Set>
</New>
</Arg>
</Call>
</Ref>
-->
放开注释就会启动报错,不是很熟悉jetty,也就没有深入研究了,于是换了一种方式实现。
1、首先将solr/server/etc/jetty.xml中原来的RequestLog节点(找到如下内容)注释掉:
<!--
<Item>
<New id="RequestLog" class="org.eclipse.jetty.server.handler.RequestLogHandler"/>
</Item>
-->
2、在solr/server/contexts/solr-jetty-context.xml中添加如下内容:
<Configure class="org.eclipse.jetty.webapp.WebAppContext">
....
<!-- access log:client IP address, date, method, URL, result, size, referrer, user agent and latency -->
<Call name="insertHandler">
<Arg>
<New id="RequestLog" class="org.eclipse.jetty.server.handler.RequestLogHandler">
<Set name="requestLog">
<New id="RequestLogImpl" class="org.eclipse.jetty.server.NCSARequestLog">
<Set name="filename"><Property name="jetty.logs" default="/data/solr/logs"/>/access-yyyy_mm_dd.log</Set>
<Set name="filenameDateFormat">yyyy_MM_dd</Set>
<Set name="LogTimeZone">GMT+0800</Set>
<Set name="retainDays">90</Set>
<Set name="append">true</Set>
<Set name="LogLatency">true</Set>
</New>
</Set>
</New>
</Arg>
</Call>
</Configure>
其中,LogTimeZone为jetty记录日志的时区,比如GMT+0800或者Asia/Shanghai。
重启solr后,在上面配置的{jetty.logs}目录下便会按天生成access-yyyy_mm_dd.log格式的访问日志。