From 7eb8457fff1580adf1df06cca66a3fcf95e58c66 Mon Sep 17 00:00:00 2001 From: Bjørn Christian Seime Date: Tue, 30 Jan 2018 14:26:07 +0100 Subject: Don't use getURI in json and vespa access log format --- .../java/com/yahoo/container/logging/JSONFormatter.java | 13 +++---------- .../java/com/yahoo/container/logging/VespaAccessLog.java | 14 ++++++-------- .../java/com/yahoo/container/logging/JSONLogTestCase.java | 6 ++++-- 3 files changed, 13 insertions(+), 20 deletions(-) diff --git a/container-accesslogging/src/main/java/com/yahoo/container/logging/JSONFormatter.java b/container-accesslogging/src/main/java/com/yahoo/container/logging/JSONFormatter.java index 1bbc08aa0a7..adadd0b1414 100644 --- a/container-accesslogging/src/main/java/com/yahoo/container/logging/JSONFormatter.java +++ b/container-accesslogging/src/main/java/com/yahoo/container/logging/JSONFormatter.java @@ -10,7 +10,6 @@ import java.io.ByteArrayOutputStream; import java.io.IOException; import java.math.BigDecimal; import java.math.RoundingMode; -import java.net.URI; import java.security.Principal; import java.util.List; import java.util.Map; @@ -53,7 +52,7 @@ public class JSONFormatter { generator.writeNumberField("responsesize", accessLogEntry.getReturnedContentSize()); generator.writeNumberField("code", accessLogEntry.getStatusCode()); generator.writeStringField("method", accessLogEntry.getHttpMethod()); - generator.writeStringField("uri", getNormalizedURI(accessLogEntry.getURI())); + generator.writeStringField("uri", getNormalizedURI(accessLogEntry.getRawPath(), accessLogEntry.getRawQuery().orElse(null))); generator.writeStringField("version", accessLogEntry.getHttpVersion()); generator.writeStringField("agent", accessLogEntry.getUserAgent()); generator.writeStringField("host", accessLogEntry.getHostString()); @@ -179,14 +178,8 @@ public class JSONFormatter { return duration.setScale(3, BigDecimal.ROUND_HALF_UP); } - private String getNormalizedURI(URI uri) { - URI normalizedURI = uri.normalize(); - String uriString = normalizedURI.getPath(); - if (normalizedURI.getRawQuery() != null) { - uriString = uriString + "?" + normalizedURI.getRawQuery(); - } - - return uriString; + private static String getNormalizedURI(String rawPath, String rawQuery) { + return rawQuery != null ? rawPath + "?" + rawQuery : rawPath; } } diff --git a/container-accesslogging/src/main/java/com/yahoo/container/logging/VespaAccessLog.java b/container-accesslogging/src/main/java/com/yahoo/container/logging/VespaAccessLog.java index b8e5bbb2461..3a0713142df 100644 --- a/container-accesslogging/src/main/java/com/yahoo/container/logging/VespaAccessLog.java +++ b/container-accesslogging/src/main/java/com/yahoo/container/logging/VespaAccessLog.java @@ -2,17 +2,15 @@ package com.yahoo.container.logging; import com.yahoo.container.core.AccessLogConfig; -import com.yahoo.net.UriTools; -import java.net.URI; import java.text.SimpleDateFormat; import java.util.Date; import java.util.TimeZone; import java.util.logging.Level; /** - * @author Bjorn Borud - * @author bakksjo + * @author Bjorn Borud + * @author Oyvind Bakksjo */ public final class VespaAccessLog implements AccessLogInterface { @@ -35,9 +33,8 @@ public final class VespaAccessLog implements AccessLogInterface { return dateFormat.format(date); } - private String getRequest(final String httpMethod, final URI uri, final String httpVersion) { - final URI normalizedUri = uri.normalize(); - return httpMethod + " " + UriTools.rawRequest(normalizedUri) + " " + httpVersion; + private String getRequest(final String httpMethod, final String rawPath, final String rawQuery, final String httpVersion) { + return httpMethod + " " + (rawQuery != null ? rawPath + "?" + rawQuery : rawPath) + " " + httpVersion; } private String getUser(String user) { @@ -102,7 +99,8 @@ public final class VespaAccessLog implements AccessLogInterface { accessLogEntry.getUser(), getRequest( accessLogEntry.getHttpMethod(), - accessLogEntry.getURI(), + accessLogEntry.getRawPath(), + accessLogEntry.getRawQuery().orElse(null), accessLogEntry.getHttpVersion()), accessLogEntry.getReferer(), accessLogEntry.getUserAgent(), diff --git a/container-accesslogging/src/test/java/com/yahoo/container/logging/JSONLogTestCase.java b/container-accesslogging/src/test/java/com/yahoo/container/logging/JSONLogTestCase.java index ae27d7b1814..747cb2f83cb 100644 --- a/container-accesslogging/src/test/java/com/yahoo/container/logging/JSONLogTestCase.java +++ b/container-accesslogging/src/test/java/com/yahoo/container/logging/JSONLogTestCase.java @@ -15,7 +15,8 @@ public class JSONLogTestCase extends junit.framework.TestCase { private AccessLogEntry newAccessLogEntry(final String query) { final AccessLogEntry entry = new AccessLogEntry(); - entry.setURI(newQueryUri(query)); + entry.setRawQuery("query="+query); + entry.setRawPath(""); entry.setIpV4Address(ipAddress); entry.setHttpMethod("GET"); entry.setHttpVersion("HTTP/1.1"); @@ -156,7 +157,8 @@ public class JSONLogTestCase extends junit.framework.TestCase { public void test_useragent_with_quotes() throws Exception { final AccessLogEntry entry = new AccessLogEntry(); - entry.setURI(newQueryUri("test")); + entry.setRawQuery("query=test"); + entry.setRawPath(""); entry.setIpV4Address(ipAddress); entry.setHttpMethod("GET"); entry.setHttpVersion("HTTP/1.1"); -- cgit v1.2.3