From 22e7679dd681f7f16dc5e795317e15a95403b597 Mon Sep 17 00:00:00 2001 From: Lachlan Roberts Date: Tue, 6 Nov 2018 12:21:30 +0100 Subject: [PATCH] Issue 113 - CustomRequestLog changed the log type to include the response Signed-off-by: Lachlan Roberts --- .../org/eclipse/jetty/server/CustomRequestLog.java | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/jetty-server/src/main/java/org/eclipse/jetty/server/CustomRequestLog.java b/jetty-server/src/main/java/org/eclipse/jetty/server/CustomRequestLog.java index f0cb7d45556..c13fcdba1c0 100644 --- a/jetty-server/src/main/java/org/eclipse/jetty/server/CustomRequestLog.java +++ b/jetty-server/src/main/java/org/eclipse/jetty/server/CustomRequestLog.java @@ -341,7 +341,7 @@ public class CustomRequestLog extends AbstractLifeCycle implements RequestLog StringBuilder sb = _buffers.get(); sb.setLength(0); - _logHandle.invoke(sb, request); + _logHandle.invoke(sb, request, response); String log = sb.toString(); write(log); @@ -540,19 +540,17 @@ public class CustomRequestLog extends AbstractLifeCycle implements RequestLog append(buf, s); } - public static void logClientIP(StringBuilder b, Request request) + public static void logClientIP(StringBuilder b, Request request, Response response) { b.append(request.getRemoteAddr()); } - - //TODO add response to signature - private static final MethodType LOG_TYPE = methodType(Void.TYPE, StringBuilder.class, Request.class); + private static final MethodType LOG_TYPE = methodType(Void.TYPE, StringBuilder.class, Request.class, Response.class); private MethodHandle getLogHandle(String formatString) throws Throwable { MethodHandle append = MethodHandles.lookup().findStatic(CustomRequestLog.class, "append", methodType(Void.TYPE, String.class, StringBuilder.class)); - MethodHandle logHandle = dropArguments(append.bindTo("\n"), 1, Request.class); + MethodHandle logHandle = dropArguments(dropArguments(append.bindTo("\n"), 1, Request.class), 2, Response.class); final Pattern PERCENT_CODE = Pattern.compile("(?.*)%(?:\\{(?[^{}]+)})?(?[a-zA-Z%])"); final Pattern LITERAL = Pattern.compile("(?.*%(?:\\{[^{}]+})?[a-zA-Z%])(?.*)"); @@ -592,7 +590,8 @@ public class CustomRequestLog extends AbstractLifeCycle implements RequestLog private MethodHandle updateLogHandle(MethodHandle logHandle, MethodHandle append, String literal) { - return foldArguments(logHandle, dropArguments(append.bindTo(literal), 1, Request.class)); + return foldArguments(logHandle, dropArguments(dropArguments(append.bindTo(literal), 1, Request.class), 2, Response.class)); + }