【问题标题】:RequestLog does not implement LifeCycle in jetty 9.4RequestLog 在 jetty 9.4 中没有实现 LifeCycle
【发布时间】:2019-06-18 21:18:22
【问题描述】:

在 Jetty 9.4 中,org.eclipse.jetty.server.RequestLog 不再实现 org.eclipse.jetty.util.component.LifeCycle,因此我的码头没有配置负责写入访问日志的 RequestLogImpl

任何指南如何解决这个问题?

【问题讨论】:

    标签: jetty logback embedded-jetty jetty-9


    【解决方案1】:

    从现在开始使用Server.setRequestLog(RequestLog)

    旧方法被严重破坏,没有捕获 80% 的您的上下文可能存在的失败请求,没有顶级 400 错误,没有无上下文错误,以及令人惊讶的大量其他极端情况。

    RequestLog 基础在 2014 年 10 月进行了更改,以解决所有这些丢失的日志事件。 (这是在 Jetty 9.3.0 中引入的)

    https://www.eclipse.org/jetty/javadoc/current/org/eclipse/jetty/server/Server.html#setRequestLog(org.eclipse.jetty.server.RequestLog)

    看到您提到 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);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-02-16
      • 2018-03-02
      • 2017-08-28
      • 2020-01-27
      • 1970-01-01
      • 2019-05-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多