第一种方法,最简单便捷,适应于要求不高的场景
首先要enable request log模块,通过以下命令
$ java -jar ../start.jar --add-to-start=requestlog
INFO: requestlog initialised in ${jetty.base}/start.d/requestlog.ini
MKDIR: ${jetty.base}/logs
INFO: Base directory was modified
注意从$JETTY_HOME和从$JETTY_HOME/demo-base下启start.jar,是用的不同的jetty.base, jetty推荐把web application放到demo-base下面。具体细节可参考 Deploy to Jetty
此时去demo-base/start.d/下面新添加了requestlog.ini文件,编辑此文件可以看到各种有关于requestlog的默认配置,如果需要更改默认配置,直接un-commenting这行,然后把false改为true即可,十分方便。
上述这种方法用的是默认的Jetty的RequestLog实现方式org.eclipse.jetty.server.NCSARequestLog, 如果想要用自己定制的requestlog实现类,那么可以自己实现jetty的RequestLog接口。用下面这种方式实现自由的自定义化。
第二种方法
在jetty.xml里添加handler的方式,自定义使用log实现类
<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="./logs"/>/yyyy_mm_dd.request.log</Set>
<Set name="filenameDateFormat">yyyy_MM_dd</Set>
<Set name="LogTimeZone">GMT</Set>
<Set name="retainDays">90</Set>
<Set name="append">true</Set>
<Set name="LogLatency">true</Set>
</New>
</Set>
</New>
</Arg>
</Call>
可以在<New id="RequestLogImpl" class="org.eclipse.jetty.server.NCSARequestLog">里
定义使用自己喜欢的requestlog实现类。至于用其他的requestLog的实现类,可以参考
https://logback.qos.ch/access.html
这篇是logback实现的requestLog。
参考文献:
https://www.eclipse.org/jetty/documentation/9.4.x/configuring-jetty-request-logs.html