Skip to content

Commit 5e7030f

Browse files
authored
Merge pull request #18267 from Alexandru-Borza/log-all-requests
Log all requests
2 parents ebd0050 + dde949d commit 5e7030f

File tree

2 files changed

+35
-4
lines changed

2 files changed

+35
-4
lines changed
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,56 @@
11
package com.baeldung.logallrequests;
22

3-
import java.io.CharArrayWriter;
3+
import java.io.ByteArrayOutputStream;
4+
import java.io.IOException;
5+
import java.io.OutputStreamWriter;
46
import java.io.PrintWriter;
57

8+
import jakarta.servlet.ServletOutputStream;
9+
import jakarta.servlet.WriteListener;
610
import jakarta.servlet.http.HttpServletResponse;
711
import jakarta.servlet.http.HttpServletResponseWrapper;
812

913
public class ResponseWrapper extends HttpServletResponseWrapper {
1014

11-
private final CharArrayWriter charArrayWriter = new CharArrayWriter();
12-
private final PrintWriter writer = new PrintWriter(charArrayWriter);
15+
private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
16+
private final PrintWriter writer = new PrintWriter(new OutputStreamWriter(outputStream));
1317

1418
public ResponseWrapper(HttpServletResponse response) {
1519
super(response);
1620
}
1721

22+
@Override
23+
public ServletOutputStream getOutputStream() {
24+
return new ServletOutputStream() {
25+
@Override
26+
public boolean isReady() {
27+
return true;
28+
}
29+
30+
@Override
31+
public void setWriteListener(WriteListener writeListener) {
32+
}
33+
34+
@Override
35+
public void write(int b) {
36+
outputStream.write(b);
37+
}
38+
};
39+
}
40+
1841
@Override
1942
public PrintWriter getWriter() {
2043
return writer;
2144
}
2245

46+
@Override
47+
public void flushBuffer() throws IOException {
48+
super.flushBuffer();
49+
writer.flush();
50+
}
51+
2352
public String getBodyAsString() {
24-
return charArrayWriter.toString();
53+
writer.flush();
54+
return outputStream.toString();
2555
}
2656
}

logging-modules/log-all-requests/src/test/java/com/baeldung/logallrequests/LoggingFilterIntegrationTest.java

+1
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ public void whenRequestIsHandled_thenIncomingRequestIsLogged(CapturedOutput outp
2828
.andReturn();
2929

3030
assertThat(output.getAll()).contains("Incoming Request: [GET] /api/hello");
31+
assertThat(output.getAll()).contains("Response Body: Hello, World!");
3132
}
3233

3334
@Test

0 commit comments

Comments
 (0)