【问题标题】:Does Undertow's Acces Log Time Indicate Request Recieve Time or Request Completion TIme?Undertow 访问日志时间是否指示请求接收时间或请求完成时间?
【发布时间】:2017-04-06 22:41:33
【问题描述】:

我正在使用 Undertow + JBoss,并且有一个问题。标准时间工具将根据AccessLogHandler 上的javadoc 记录日期和时间。但是,我找不到任何信息来表明这是收到请求的时间,还是完成请求的时间。

我看了一下DateTimeAttribute,它似乎是在调用 readAttribute() 时动态生成的统计信息。该方法在 undertow 核心代码中被调用了几十次,但我想相信此方法是请求/响应流中的主要用途(在 AccessLogHandler 中找到):

    private class AccessLogCompletionListener implements ExchangeCompletionListener {
    @Override
    public void exchangeEvent(final HttpServerExchange exchange, final NextListener nextListener) {
        try {
            if(predicate == null || predicate.resolve(exchange)) {
                accessLogReceiver.logMessage(tokens.readAttribute(exchange));
            }
        } finally {
            nextListener.proceed();
        }
    }
}

因此,如果我正确理解了这段代码,那么这个时间戳似乎是在请求完成之后生成的。任何人都可以确认是这种情况吗?

【问题讨论】:

    标签: wildfly undertow


    【解决方案1】:

    这是完成时间。您可以通过记下您的 PC 时钟来测试这一点,做一个很长的请求,例如通过在您的 servlet 或其他 UI 代码中设置断点,执行Thread.sleep(30000),然后在访问日志中查看时间戳。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-05-28
      • 1970-01-01
      • 2017-10-27
      • 2012-04-23
      • 2016-08-20
      • 1970-01-01
      • 2016-03-12
      • 2020-07-10
      相关资源
      最近更新 更多