8351347: HttpClient Improve logging of response headers

Reviewed-by: dfuchs, michaelm
This commit is contained in:
Volkan Yazici 2025-05-15 14:10:16 +00:00 committed by Daniel Fuchs
parent 5cb231714f
commit 81e8e670ce
4 changed files with 24 additions and 17 deletions

View File

@ -81,15 +81,20 @@ class Http1Request {
private void logHeaders(String completeHeaders) {
if (Log.headers()) {
//StringBuilder sb = new StringBuilder(256);
//sb.append("REQUEST HEADERS:\n");
//Log.dumpHeaders(sb, " ", systemHeaders);
//Log.dumpHeaders(sb, " ", userHeaders);
//Log.logHeaders(sb.toString());
String s = completeHeaders.replaceAll("\r\n", "\n");
if (s.endsWith("\n\n")) s = s.substring(0, s.length() - 2);
Log.logHeaders("REQUEST HEADERS:\n{0}\n", s);
StringBuilder sb = new StringBuilder(completeHeaders.length());
sb.append("REQUEST HEADERS:\n");
boolean[] firstLine = {true};
completeHeaders.lines().forEach(line -> {
// First line contains `GET /foo HTTP/1.1`.
// Convert it to look like other `Log.logHeaders()` outputs.
if (firstLine[0]) {
sb.append(" ").append(line).append('\n');
firstLine[0] = false;
} else if (!line.isBlank()) {
sb.append(" ").append(line).append('\n');
}
});
Log.logHeaders(sb.toString());
}
}

View File

@ -224,6 +224,7 @@ class Http1Response<T> {
if (Log.headers()) {
StringBuilder sb = new StringBuilder("RESPONSE HEADERS:\n");
sb.append(" %s %s %s\n".formatted(request.method(), request.uri(), responseCode));
Log.dumpHeaders(sb, " ", headers);
Log.logHeaders(sb.toString());
}

View File

@ -1685,8 +1685,8 @@ class Http2Connection {
private List<ByteBuffer> encodeHeaders(OutgoingHeaders<Stream<?>> oh, Stream<?> stream) {
oh.streamid(stream.streamid);
if (Log.headers()) {
StringBuilder sb = new StringBuilder("HEADERS FRAME (stream=");
sb.append(stream.streamid).append(")\n");
StringBuilder sb = new StringBuilder("HEADERS FRAME (streamid=%s):\n".formatted(stream.streamid));
sb.append(" %s %s\n".formatted(stream.request.method(), stream.request.uri()));
Log.dumpHeaders(sb, " ", oh.getAttachment().getRequestPseudoHeaders());
Log.dumpHeaders(sb, " ", oh.getSystemHeaders());
Log.dumpHeaders(sb, " ", oh.getUserHeaders());

View File

@ -662,7 +662,8 @@ class Stream<T> extends ExchangeImpl<T> {
responseHeaders.firstValueAsLong("content-length");
if (Log.headers()) {
StringBuilder sb = new StringBuilder("RESPONSE HEADERS:\n");
StringBuilder sb = new StringBuilder("RESPONSE HEADERS (streamid=%s):\n".formatted(streamid));
sb.append(" %s %s %s\n".formatted(request.method(), request.uri(), responseCode));
Log.dumpHeaders(sb, " ", responseHeaders);
Log.logHeaders(sb.toString());
}
@ -673,7 +674,7 @@ class Stream<T> extends ExchangeImpl<T> {
completeResponse(response);
} else {
if (Log.headers()) {
StringBuilder sb = new StringBuilder("TRAILING HEADERS:\n");
StringBuilder sb = new StringBuilder("TRAILING HEADERS (streamid=%s):\n".formatted(streamid));
Log.dumpHeaders(sb, " ", responseHeaders);
Log.logHeaders(sb.toString());
}
@ -1770,8 +1771,8 @@ class Stream<T> extends ExchangeImpl<T> {
responseHeaders.firstValueAsLong("content-length");
if (Log.headers()) {
StringBuilder sb = new StringBuilder("RESPONSE HEADERS");
sb.append(" (streamid=").append(streamid).append("):\n");
StringBuilder sb = new StringBuilder("RESPONSE HEADERS (streamid=%s):\n".formatted(streamid));
sb.append(" %s %s %s\n".formatted(request.method(), request.uri(), responseCode));
Log.dumpHeaders(sb, " ", responseHeaders);
Log.logHeaders(sb.toString());
}
@ -1782,8 +1783,8 @@ class Stream<T> extends ExchangeImpl<T> {
completeResponse(response);
} else {
if (Log.headers()) {
StringBuilder sb = new StringBuilder("TRAILING HEADERS");
sb.append(" (streamid=").append(streamid).append("):\n");
StringBuilder sb = new StringBuilder("TRAILING HEADERS (streamid=%s):\n".formatted(streamid));
sb.append(" %s %s %s\n".formatted(request.method(), request.uri(), responseCode));
Log.dumpHeaders(sb, " ", responseHeaders);
Log.logHeaders(sb.toString());
}