diff options
Diffstat (limited to 'container-core/src/main/java/com/yahoo/container/logging')
-rw-r--r-- | container-core/src/main/java/com/yahoo/container/logging/ConnectionLogEntry.java | 17 | ||||
-rw-r--r-- | container-core/src/main/java/com/yahoo/container/logging/JsonConnectionLogWriter.java | 32 |
2 files changed, 43 insertions, 6 deletions
diff --git a/container-core/src/main/java/com/yahoo/container/logging/ConnectionLogEntry.java b/container-core/src/main/java/com/yahoo/container/logging/ConnectionLogEntry.java index 6afe3b74329..5b30ce5963d 100644 --- a/container-core/src/main/java/com/yahoo/container/logging/ConnectionLogEntry.java +++ b/container-core/src/main/java/com/yahoo/container/logging/ConnectionLogEntry.java @@ -33,6 +33,8 @@ public class ConnectionLogEntry { private final Instant sslPeerNotAfter; private final String sslSniServerName; private final SslHandshakeFailure sslHandshakeFailure; + private final String httpProtocol; + private final String proxyProtocolVersion; private ConnectionLogEntry(Builder builder) { @@ -57,6 +59,8 @@ public class ConnectionLogEntry { this.sslPeerNotAfter = builder.sslPeerNotAfter; this.sslSniServerName = builder.sslSniServerName; this.sslHandshakeFailure = builder.sslHandshakeFailure; + this.httpProtocol = builder.httpProtocol; + this.proxyProtocolVersion = builder.proxyProtocolVersion; } public static Builder builder(UUID id, Instant timestamp) { @@ -84,6 +88,8 @@ public class ConnectionLogEntry { public Optional<Instant> sslPeerNotAfter() { return Optional.ofNullable(sslPeerNotAfter); } public Optional<String> sslSniServerName() { return Optional.ofNullable(sslSniServerName); } public Optional<SslHandshakeFailure> sslHandshakeFailure() { return Optional.ofNullable(sslHandshakeFailure); } + public Optional<String> httpProtocol() { return Optional.ofNullable(httpProtocol); } + public Optional<String> proxyProtocolVersion() { return Optional.ofNullable(proxyProtocolVersion); } public static class SslHandshakeFailure { private final String type; @@ -133,6 +139,8 @@ public class ConnectionLogEntry { private Instant sslPeerNotAfter; private String sslSniServerName; private SslHandshakeFailure sslHandshakeFailure; + private String httpProtocol; + private String proxyProtocolVersion; Builder(UUID id, Instant timestamp) { @@ -217,9 +225,18 @@ public class ConnectionLogEntry { this.sslHandshakeFailure = sslHandshakeFailure; return this; } + public Builder withHttpProtocol(String protocol) { + this.httpProtocol = protocol; + return this; + } + public Builder withProxyProtocolVersion(String version) { + this.proxyProtocolVersion = version; + return this; + } public ConnectionLogEntry build(){ return new ConnectionLogEntry(this); } + } } diff --git a/container-core/src/main/java/com/yahoo/container/logging/JsonConnectionLogWriter.java b/container-core/src/main/java/com/yahoo/container/logging/JsonConnectionLogWriter.java index 158d2ec4ea6..dfdc5f1b55a 100644 --- a/container-core/src/main/java/com/yahoo/container/logging/JsonConnectionLogWriter.java +++ b/container-core/src/main/java/com/yahoo/container/logging/JsonConnectionLogWriter.java @@ -33,12 +33,32 @@ class JsonConnectionLogWriter implements LogWriter<ConnectionLogEntry> { writeOptionalInteger(generator, "peerPort", unwrap(record.peerPort())); writeOptionalString(generator, "localAddress", unwrap(record.localAddress())); writeOptionalInteger(generator, "localPort", unwrap(record.localPort())); - writeOptionalString(generator, "remoteAddress", unwrap(record.remoteAddress())); - writeOptionalInteger(generator, "remotePort", unwrap(record.remotePort())); - writeOptionalLong(generator, "httpBytesReceived", unwrap(record.httpBytesReceived())); - writeOptionalLong(generator, "httpBytesSent", unwrap(record.httpBytesSent())); - writeOptionalLong(generator, "requests", unwrap(record.requests())); - writeOptionalLong(generator, "responses", unwrap(record.responses())); + + String proxyProtocolVersion = unwrap(record.proxyProtocolVersion()); + String proxyProtocolRemoteAddress = unwrap(record.remoteAddress()); + Integer proxyProtocolRemotePort = unwrap(record.remotePort()); + if (isAnyValuePresent(proxyProtocolVersion, proxyProtocolRemoteAddress, proxyProtocolRemotePort)) { + generator.writeObjectFieldStart("proxyProtocol"); + writeOptionalString(generator, "version", proxyProtocolVersion); + writeOptionalString(generator, "remoteAddress", proxyProtocolRemoteAddress); + writeOptionalInteger(generator, "remotePort", proxyProtocolRemotePort); + generator.writeEndObject(); + } + + String httpVersion = unwrap(record.httpProtocol()); + Long httpBytesReceived = unwrap(record.httpBytesReceived()); + Long httpBytesSent = unwrap(record.httpBytesSent()); + Long httpRequests = unwrap(record.requests()); + Long httpResponses = unwrap(record.responses()); + if (isAnyValuePresent(httpVersion, httpBytesReceived, httpBytesSent, httpRequests, httpResponses)) { + generator.writeObjectFieldStart("http"); + writeOptionalString(generator, "version", httpVersion); + writeOptionalLong(generator, "bytesReceived", httpBytesReceived); + writeOptionalLong(generator, "responses", httpResponses); + writeOptionalLong(generator, "bytesSent", httpBytesSent); + writeOptionalLong(generator, "requests", httpRequests); + generator.writeEndObject(); + } String sslProtocol = unwrap(record.sslProtocol()); String sslSessionId = unwrap(record.sslSessionId()); |