在Jetty 9.4中,org.eclipse.jetty.server.RequestLog
不再实现org.eclipse.jetty.util.component.LifeCycle
,因此,我的码头不配置RequestLogImpl
来负责写访问日志。
任何准则如何解决?
答案 0 :(得分:0)
从现在开始使用Server.setRequestLog(RequestLog)
。
旧方法被严重破坏,没有捕获您的上下文可能遇到的80%失败请求,没有顶级400错误,没有上下文无关的错误以及令人惊讶的大量其他极端情况。
RequestLog基础在2014年10月进行了更改,以解决所有这些丢失的日志事件。 (这是在Jetty 9.3.0中引入的)
看到您提到logback时,我敢打赌您正在尝试配置logback-access。
请参阅https://github.com/qos-ch/logback/pull/269
上的讨论请注意,Jetty 9.4.15+具有接受自定义格式的CustomRequestLog。
用法示例(与slf4j一起使用)
Slf4jRequestLogWriter slf4jRequestLogWriter = new Slf4jRequestLogWriter();
// the slf4j named logger to output to
slf4jRequestLogWriter.setLoggerName("my.requestlog");
// The format of the output. (See javadoc for CustomRequestLog for details)
String requestLogFormat = "%{client}a - %u %t \"%r\" %s %O \"%{Referer}i\" \"%{User-Agent}i\"";
CustomRequestLog requestLog = new CustomRequestLog(slf4jRequestLogWriter, requestLogFormat);
server.setRequestLog(requestLog);