From 30763962a15cc2a1f2daf42c183a0ef862047783 Mon Sep 17 00:00:00 2001 From: Bjørn Christian Seime Date: Tue, 14 Nov 2017 18:00:17 +0100 Subject: Add 'secure' and 'local-port' to JSON access log --- .../yahoo/container/logging/AccessLogEntry.java | 38 +++++++++++++++++++--- .../com/yahoo/container/logging/JSONFormatter.java | 2 ++ .../yahoo/container/logging/JSONLogTestCase.java | 10 ++++++ 3 files changed, 45 insertions(+), 5 deletions(-) (limited to 'container-accesslogging/src') 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 38c341a6a3e..f1c727ce5ff 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 @@ -1,6 +1,9 @@ // Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.container.logging; +import com.yahoo.collections.ListMap; +import org.apache.commons.lang.builder.ReflectionToStringBuilder; + import java.net.InetAddress; import java.net.InetSocketAddress; import java.net.URI; @@ -10,11 +13,6 @@ import java.util.List; import java.util.Map; import java.util.Set; import java.util.function.Function; -import java.util.logging.Level; -import java.util.logging.Logger; - -import com.yahoo.collections.ListMap; -import org.apache.commons.lang.builder.ReflectionToStringBuilder; import static java.util.stream.Collectors.toMap; @@ -32,6 +30,7 @@ import static java.util.stream.Collectors.toMap; * * @author tonytv * @author bakksjo + * @author bjorncs */ public class AccessLogEntry { public enum CookieType { @@ -91,6 +90,8 @@ public class AccessLogEntry { private String zDataIncrementSlotByOneRequest; private String hostString; private int statusCode; + private String scheme; + private int localPort; private ListMap keyValues=null; @@ -682,6 +683,32 @@ public class AccessLogEntry { } } + public String getScheme() { + synchronized (monitor) { + return scheme; + } + } + + public void setScheme(String scheme) { + synchronized (monitor) { + requireNull(this.scheme); + this.scheme = scheme; + } + } + + public int getLocalPort() { + synchronized (monitor) { + return localPort; + } + } + + public void setLocalPort(int localPort) { + synchronized (monitor) { + requireZero(this.localPort); + this.localPort = localPort; + } + } + @Override public String toString() { synchronized (monitor) { @@ -708,4 +735,5 @@ public class AccessLogEntry { throw new IllegalStateException("Attempt to overwrite field that has been assigned. Value: " + value); } } + } 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 450369d998f..a328f0d34bd 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 @@ -56,6 +56,8 @@ public class JSONFormatter { generator.writeStringField("version", accessLogEntry.getHttpVersion()); generator.writeStringField("agent", accessLogEntry.getUserAgent()); generator.writeStringField("host", accessLogEntry.getHostString()); + generator.writeStringField("scheme", accessLogEntry.getScheme()); + generator.writeNumberField("localport", accessLogEntry.getLocalPort()); // Only add remote address/port fields if relevant if (remoteAddressDiffers(accessLogEntry.getIpV4Address(), accessLogEntry.getRemoteAddress())) { 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 2d092d5a205..ae27d7b1814 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 @@ -48,6 +48,8 @@ public class JSONLogTestCase extends junit.framework.TestCase { "\"version\":\"HTTP/1.1\"," + "\"agent\":\"Mozilla/4.05 [en] (Win95; I)\"," + "\"host\":\"localhost\"," + + "\"scheme\":null," + + "\"localport\":0," + "\"search\":{" + "\"totalhits\":1234," + "\"hits\":0" + @@ -74,6 +76,8 @@ public class JSONLogTestCase extends junit.framework.TestCase { "\"version\":\"HTTP/1.1\"," + "\"agent\":\"Mozilla/4.05 [en] (Win95; I)\"," + "\"host\":\"localhost\"," + + "\"scheme\":null," + + "\"localport\":0," + "\"search\":{" + "\"totalhits\":1234," + "\"hits\":0" + @@ -104,6 +108,8 @@ public class JSONLogTestCase extends junit.framework.TestCase { "\"version\":\"HTTP/1.1\"," + "\"agent\":\"Mozilla/4.05 [en] (Win95; I)\"," + "\"host\":\"localhost\"," + + "\"scheme\":null," + + "\"localport\":0," + "\"remoteaddr\":\"FE80:0000:0000:0000:0202:B3FF:FE1E:8329\"," + "\"search\":{" + "\"totalhits\":1234," + @@ -127,6 +133,8 @@ public class JSONLogTestCase extends junit.framework.TestCase { "\"version\":\"HTTP/1.1\"," + "\"agent\":\"Mozilla/4.05 [en] (Win95; I)\"," + "\"host\":\"localhost\"," + + "\"scheme\":null," + + "\"localport\":0," + "\"remoteaddr\":\"FE80:0000:0000:0000:0202:B3FF:FE1E:8329\"," + "\"remoteport\":1234," + "\"search\":{" + @@ -171,6 +179,8 @@ public class JSONLogTestCase extends junit.framework.TestCase { "\"version\":\"HTTP/1.1\"," + "\"agent\":\"Mozilla/4.05 [en] (Win95; I; \\\"Best Browser Ever\\\")\"," + "\"host\":\"localhost\"," + + "\"scheme\":null," + + "\"localport\":0," + "\"search\":{" + "\"totalhits\":1234," + "\"hits\":0" + -- cgit v1.2.3