diff options
-rw-r--r-- | container-accesslogging/src/main/java/com/yahoo/container/logging/AccessLogEntry.java | 36 | ||||
-rw-r--r-- | container-core/src/main/java/com/yahoo/container/jdisc/LoggingRequestHandler.java | 11 |
2 files changed, 46 insertions, 1 deletions
diff --git a/container-accesslogging/src/main/java/com/yahoo/container/logging/AccessLogEntry.java b/container-accesslogging/src/main/java/com/yahoo/container/logging/AccessLogEntry.java index 24078151d64..9beae9463c0 100644 --- a/container-accesslogging/src/main/java/com/yahoo/container/logging/AccessLogEntry.java +++ b/container-accesslogging/src/main/java/com/yahoo/container/logging/AccessLogEntry.java @@ -96,6 +96,8 @@ public class AccessLogEntry { private int localPort; private Principal principal; private X500Principal sslPrincipal; + private String rawPath; + private String rawQuery; private ListMap<String,String> keyValues=null; @@ -597,6 +599,10 @@ public class AccessLogEntry { } } + /** + * @deprecated Use {@link #setRawPath(String)} and {@link #setRawQuery(String)} instead. + */ + @Deprecated public void setURI(final URI uri) { synchronized (monitor) { requireNull(this.uri); @@ -604,6 +610,10 @@ public class AccessLogEntry { } } + /** + * @deprecated Use {@link #getRawPath()} and {@link #getRawQuery()} instead. This method may return wrong path. + */ + @Deprecated public URI getURI() { synchronized (monitor) { return uri; @@ -739,6 +749,32 @@ public class AccessLogEntry { } } + public void setRawPath(String rawPath) { + synchronized (monitor) { + requireNull(this.rawPath); + this.rawPath = rawPath; + } + } + + public String getRawPath() { + synchronized (monitor) { + return rawPath; + } + } + + public void setRawQuery(String rawQuery) { + synchronized (monitor) { + requireNull(this.rawQuery); + this.rawQuery = rawQuery; + } + } + + public String getRawQuery() { + synchronized (monitor) { + return rawQuery; + } + } + @Override public String toString() { synchronized (monitor) { diff --git a/container-core/src/main/java/com/yahoo/container/jdisc/LoggingRequestHandler.java b/container-core/src/main/java/com/yahoo/container/jdisc/LoggingRequestHandler.java index fe11bd42a01..698c9d7f902 100644 --- a/container-core/src/main/java/com/yahoo/container/jdisc/LoggingRequestHandler.java +++ b/container-core/src/main/java/com/yahoo/container/jdisc/LoggingRequestHandler.java @@ -20,6 +20,7 @@ import java.io.IOException; import java.io.OutputStream; import java.net.InetSocketAddress; import java.net.SocketAddress; +import java.net.URI; import java.util.Optional; import java.util.concurrent.Executor; import java.util.concurrent.atomic.AtomicBoolean; @@ -304,7 +305,10 @@ public abstract class LoggingRequestHandler extends ThreadedHttpRequestHandler { logEntry.setRemoteAddress(remoteAddress); logEntry.setRemotePort(remoteAddress.getPort()); } - logEntry.setURI(AccessLogUtil.getUri(httpRequest)); + URI uri = AccessLogUtil.getUri(httpRequest); + setDeprecatedUri(logEntry, uri); + logEntry.setRawPath(uri.getRawPath()); + logEntry.setRawQuery(uri.getRawQuery()); logEntry.setUserAgent(AccessLogUtil.getUserAgentHeader(httpRequest)); logEntry.setReferer(AccessLogUtil.getReferrerHeader(httpRequest)); logEntry.setHttpMethod(AccessLogUtil.getHttpMethod(httpRequest)); @@ -314,6 +318,11 @@ public abstract class LoggingRequestHandler extends ThreadedHttpRequestHandler { } } + @SuppressWarnings("deprecation") + private static void setDeprecatedUri(AccessLogEntry logEntry, URI uri) { + logEntry.setURI(uri); + } + @Override public void handleTimeout(Request request, ResponseHandler responseHandler) { LoggingHandler loggingHandler = this.loggingHandler.get(); |