Undertow 访问日志时间表示请求接收时间还是请求完成时间?

Does Undertow's Acces Log Time Indicate Request Recieve Time or Request Completion TIme?

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

我看了一眼DateTimeAttribute,它似乎是调用readAttribute() 时动态生成的统计信息。该方法在 undertow 核心代码中被调用了几十次,但我想相信该方法是 request/response 流(在 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();
        }
    }
}

因此,如果我对这段代码的理解正确,那么这个时间戳似乎是在请求完成后生成的。谁能证实是这样吗?

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