From 0f3770dcc2a5403fa65a5141ec822e6922a8e350 Mon Sep 17 00:00:00 2001 From: Bjørn Christian Seime Date: Thu, 20 May 2021 17:16:12 +0200 Subject: Add HTTP/2 stream id to request log --- .../yahoo/jdisc/http/server/jetty/AccessLogRequestLog.java | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'container-core') diff --git a/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/AccessLogRequestLog.java b/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/AccessLogRequestLog.java index 11898381f0a..08b89094486 100644 --- a/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/AccessLogRequestLog.java +++ b/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/AccessLogRequestLog.java @@ -8,6 +8,10 @@ import com.yahoo.container.logging.RequestLog; import com.yahoo.container.logging.RequestLogEntry; import com.yahoo.jdisc.http.ServerConfig; import com.yahoo.jdisc.http.servlet.ServletRequest; +import org.eclipse.jetty.http2.HTTP2Stream; +import org.eclipse.jetty.http2.server.HttpTransportOverHTTP2; +import org.eclipse.jetty.server.HttpChannel; +import org.eclipse.jetty.server.HttpTransport; import org.eclipse.jetty.server.Request; import org.eclipse.jetty.server.Response; import org.eclipse.jetty.util.component.AbstractLifeCycle; @@ -117,6 +121,7 @@ class AccessLogRequestLog extends AbstractLifeCycle implements org.eclipse.jetty addNonNullValue(builder, accessLogEntry.getHitCounts(), RequestLogEntry.Builder::hitCounts); addNonNullValue(builder, accessLogEntry.getTrace(), RequestLogEntry.Builder::traceNode); } + http2StreamId(request).ifPresent(streamId -> builder.addExtraAttribute("http2-stream-id", Integer.toString(streamId))); requestLog.log(builder.build()); } catch (Exception e) { @@ -158,6 +163,15 @@ class AccessLogRequestLog extends AbstractLifeCycle implements org.eclipse.jetty } } + private static OptionalInt http2StreamId(Request request) { + HttpChannel httpChannel = request.getHttpChannel(); + if (httpChannel == null) return OptionalInt.empty(); + HttpTransport transport = httpChannel.getHttpTransport(); + if (!(transport instanceof HttpTransportOverHTTP2)) return OptionalInt.empty(); + HTTP2Stream stream = (HTTP2Stream) ((HttpTransportOverHTTP2) transport).getStream(); + return OptionalInt.of(stream.getId()); + } + private static void addNonNullValue( RequestLogEntry.Builder builder, T value, BiConsumer setter) { if (value != null) { -- cgit v1.2.3