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

时间:2017-04-06 22:41:33

标签: wildfly undertow

我正在与Undertow + JBoss合作,并提出了一个问题。标准时间工具将根据AccessLogHandler上的javadoc记录日期和时间。但是,我无法找到任何信息来表明这是收到请求的时间,还是请求完成的时间。

我看了DateTimeAttribute,看来当调用readAttribute()时它将是一个动态生成的统计信息。在underow核心代码中,该方法被称为几十次,但我想相信这种方法是请求/响应流程中的主要用途(在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();
        }
    }
}

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

1 个答案:

答案 0 :(得分:1)

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