From 274078dd8e9f90bbe86ef07a89acfc2437e22cec Mon Sep 17 00:00:00 2001 From: Morten Tokle Date: Tue, 19 Jan 2021 08:40:15 +0100 Subject: Write connection log to file --- .../container/logging/ConnectionLogHandler.java | 30 ++++++++++++++++++++ .../yahoo/container/logging/FileConnectionLog.java | 32 ++++++++++++++++++++++ .../jdisc.http.container.connection-log.def | 4 +++ 3 files changed, 66 insertions(+) create mode 100644 jdisc_http_service/src/main/java/com/yahoo/container/logging/ConnectionLogHandler.java create mode 100644 jdisc_http_service/src/main/java/com/yahoo/container/logging/FileConnectionLog.java create mode 100644 jdisc_http_service/src/main/resources/configdefinitions/jdisc.http.container.connection-log.def (limited to 'jdisc_http_service/src/main') diff --git a/jdisc_http_service/src/main/java/com/yahoo/container/logging/ConnectionLogHandler.java b/jdisc_http_service/src/main/java/com/yahoo/container/logging/ConnectionLogHandler.java new file mode 100644 index 00000000000..c883e78d01d --- /dev/null +++ b/jdisc_http_service/src/main/java/com/yahoo/container/logging/ConnectionLogHandler.java @@ -0,0 +1,30 @@ +// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. + +package com.yahoo.container.logging; + +import java.util.logging.Logger; + +class ConnectionLogHandler { + public Logger connection = Logger.getAnonymousLogger(); + private final LogFileHandler logFileHandler; + + public ConnectionLogHandler(String clusterName) { + connection.setUseParentHandlers(false); + + logFileHandler = new LogFileHandler(true); + logFileHandler.setFilePattern(String.format("logs/vespa/qrs/connection.%s.%s", clusterName, "%Y%m%d%H%M%S")); + + LogFormatter lf = new LogFormatter(); + lf.messageOnly(true); + this.logFileHandler.setFormatter(lf); + connection.addHandler(this.logFileHandler); + } + + public void shutdown() { + logFileHandler.close(); + connection.removeHandler(logFileHandler); + + if (logFileHandler!=null) + logFileHandler.shutdown(); + } +} \ No newline at end of file diff --git a/jdisc_http_service/src/main/java/com/yahoo/container/logging/FileConnectionLog.java b/jdisc_http_service/src/main/java/com/yahoo/container/logging/FileConnectionLog.java new file mode 100644 index 00000000000..79ea3395283 --- /dev/null +++ b/jdisc_http_service/src/main/java/com/yahoo/container/logging/FileConnectionLog.java @@ -0,0 +1,32 @@ +// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. + +package com.yahoo.container.logging; + +import com.google.inject.Inject; +import com.yahoo.jdisc.http.container.logging.ConnectionLogConfig; + +import java.util.logging.Level; +import java.util.logging.Logger; + +/** + * @author mortent + */ +public class FileConnectionLog implements ConnectionLog { + + private static final Logger logger = Logger.getLogger(FileConnectionLog.class.getName()); + private final ConnectionLogHandler logHandler; + + @Inject + public FileConnectionLog(ConnectionLogConfig config) { + logHandler = new ConnectionLogHandler(config.cluster()); + } + + @Override + public void log(ConnectionLogEntry connectionLogEntry) { + try { + logHandler.connection.log(Level.INFO, connectionLogEntry.toJson()); + } catch (Exception e) { + logger.log(Level.WARNING, "Unable to write connection log entry for connection id " + connectionLogEntry.id(), e); + } + } +} diff --git a/jdisc_http_service/src/main/resources/configdefinitions/jdisc.http.container.connection-log.def b/jdisc_http_service/src/main/resources/configdefinitions/jdisc.http.container.connection-log.def new file mode 100644 index 00000000000..522f9e85650 --- /dev/null +++ b/jdisc_http_service/src/main/resources/configdefinitions/jdisc.http.container.connection-log.def @@ -0,0 +1,4 @@ +namespace=jdisc.http.container.logging + +# Name of the cluster +cluster string \ No newline at end of file -- cgit v1.2.3 From 8bfcb5bb6e57648f7d22e0f21045435a738dd8f3 Mon Sep 17 00:00:00 2001 From: Morten Tokle Date: Tue, 19 Jan 2021 08:42:03 +0100 Subject: Remove unused implementation --- .../vespa/model/container/ContainerCluster.java | 1 - .../container/logging/SimpleConnectionLog.java | 23 ---------------------- 2 files changed, 24 deletions(-) delete mode 100644 jdisc_http_service/src/main/java/com/yahoo/container/logging/SimpleConnectionLog.java (limited to 'jdisc_http_service/src/main') diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/ContainerCluster.java b/config-model/src/main/java/com/yahoo/vespa/model/container/ContainerCluster.java index 373aacf1051..f4805e7ac15 100755 --- a/config-model/src/main/java/com/yahoo/vespa/model/container/ContainerCluster.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/container/ContainerCluster.java @@ -24,7 +24,6 @@ import com.yahoo.container.jdisc.JdiscBindingsConfig; import com.yahoo.container.jdisc.config.HealthMonitorConfig; import com.yahoo.container.jdisc.state.StateHandler; import com.yahoo.container.logging.AccessLog; -import com.yahoo.container.logging.SimpleConnectionLog; import com.yahoo.container.usability.BindingsOverviewHandler; import com.yahoo.document.config.DocumentmanagerConfig; import com.yahoo.jdisc.http.filter.SecurityFilterInvoker; diff --git a/jdisc_http_service/src/main/java/com/yahoo/container/logging/SimpleConnectionLog.java b/jdisc_http_service/src/main/java/com/yahoo/container/logging/SimpleConnectionLog.java deleted file mode 100644 index ea6db42aa16..00000000000 --- a/jdisc_http_service/src/main/java/com/yahoo/container/logging/SimpleConnectionLog.java +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. - -package com.yahoo.container.logging; - -import java.util.logging.Level; -import java.util.logging.Logger; - -/** - * @author mortent - */ -public class SimpleConnectionLog implements ConnectionLog { - - private static final Logger logger = Logger.getLogger(SimpleConnectionLog.class.getName()); - - @Override - public void log(ConnectionLogEntry connectionLogEntry) { - try { - System.out.println(connectionLogEntry.toJson()); - } catch (Exception e) { - logger.log(Level.WARNING, "Unable to write connection log entry for connection id " + connectionLogEntry.id(), e); - } - } -} -- cgit v1.2.3 From 5d53a6fa04da4b5e92778a3b885d6a6f1328e37d Mon Sep 17 00:00:00 2001 From: Morten Tokle Date: Tue, 19 Jan 2021 10:40:15 +0100 Subject: Code review fixes --- .../model/container/component/ConnectionLogComponent.java | 2 +- .../com/yahoo/vespa/model/container/xml/AccessLogTest.java | 2 +- .../com/yahoo/container/logging/ConnectionLogHandler.java | 9 +++++---- .../java/com/yahoo/container/logging/FileConnectionLog.java | 11 ++++++++--- .../configdefinitions/container.logging.connection-log.def | 4 ++++ .../configdefinitions/jdisc.http.container.connection-log.def | 4 ---- 6 files changed, 19 insertions(+), 13 deletions(-) create mode 100644 jdisc_http_service/src/main/resources/configdefinitions/container.logging.connection-log.def delete mode 100644 jdisc_http_service/src/main/resources/configdefinitions/jdisc.http.container.connection-log.def (limited to 'jdisc_http_service/src/main') diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/component/ConnectionLogComponent.java b/config-model/src/main/java/com/yahoo/vespa/model/container/component/ConnectionLogComponent.java index f3f83a30f15..bf279c5c364 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/container/component/ConnectionLogComponent.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/container/component/ConnectionLogComponent.java @@ -3,7 +3,7 @@ package com.yahoo.vespa.model.container.component; import com.yahoo.container.logging.ConnectionLog; -import com.yahoo.jdisc.http.container.logging.ConnectionLogConfig; +import com.yahoo.container.logging.ConnectionLogConfig; import com.yahoo.osgi.provider.model.ComponentModel; public class ConnectionLogComponent extends SimpleComponent implements ConnectionLogConfig.Producer { diff --git a/config-model/src/test/java/com/yahoo/vespa/model/container/xml/AccessLogTest.java b/config-model/src/test/java/com/yahoo/vespa/model/container/xml/AccessLogTest.java index a283b88792f..1d2dd94d6a3 100644 --- a/config-model/src/test/java/com/yahoo/vespa/model/container/xml/AccessLogTest.java +++ b/config-model/src/test/java/com/yahoo/vespa/model/container/xml/AccessLogTest.java @@ -4,10 +4,10 @@ package com.yahoo.vespa.model.container.xml; import com.yahoo.component.ComponentId; import com.yahoo.config.model.builder.xml.test.DomBuilderTest; import com.yahoo.container.core.AccessLogConfig; +import com.yahoo.container.logging.ConnectionLogConfig; import com.yahoo.container.logging.FileConnectionLog; import com.yahoo.container.logging.JSONAccessLog; import com.yahoo.container.logging.VespaAccessLog; -import com.yahoo.jdisc.http.container.logging.ConnectionLogConfig; import com.yahoo.jdisc.http.server.jetty.VoidConnectionLog; import com.yahoo.vespa.model.container.ApplicationContainerCluster; import com.yahoo.vespa.model.container.component.Component; diff --git a/jdisc_http_service/src/main/java/com/yahoo/container/logging/ConnectionLogHandler.java b/jdisc_http_service/src/main/java/com/yahoo/container/logging/ConnectionLogHandler.java index c883e78d01d..1e64ac1618c 100644 --- a/jdisc_http_service/src/main/java/com/yahoo/container/logging/ConnectionLogHandler.java +++ b/jdisc_http_service/src/main/java/com/yahoo/container/logging/ConnectionLogHandler.java @@ -4,8 +4,11 @@ package com.yahoo.container.logging; import java.util.logging.Logger; +/** + * @author mortent + */ class ConnectionLogHandler { - public Logger connection = Logger.getAnonymousLogger(); + public final Logger connection = Logger.getAnonymousLogger(); private final LogFileHandler logFileHandler; public ConnectionLogHandler(String clusterName) { @@ -23,8 +26,6 @@ class ConnectionLogHandler { public void shutdown() { logFileHandler.close(); connection.removeHandler(logFileHandler); - - if (logFileHandler!=null) - logFileHandler.shutdown(); + logFileHandler.shutdown(); } } \ No newline at end of file diff --git a/jdisc_http_service/src/main/java/com/yahoo/container/logging/FileConnectionLog.java b/jdisc_http_service/src/main/java/com/yahoo/container/logging/FileConnectionLog.java index 79ea3395283..16e49730fdd 100644 --- a/jdisc_http_service/src/main/java/com/yahoo/container/logging/FileConnectionLog.java +++ b/jdisc_http_service/src/main/java/com/yahoo/container/logging/FileConnectionLog.java @@ -3,7 +3,7 @@ package com.yahoo.container.logging; import com.google.inject.Inject; -import com.yahoo.jdisc.http.container.logging.ConnectionLogConfig; +import com.yahoo.component.AbstractComponent; import java.util.logging.Level; import java.util.logging.Logger; @@ -11,7 +11,7 @@ import java.util.logging.Logger; /** * @author mortent */ -public class FileConnectionLog implements ConnectionLog { +public class FileConnectionLog extends AbstractComponent implements ConnectionLog { private static final Logger logger = Logger.getLogger(FileConnectionLog.class.getName()); private final ConnectionLogHandler logHandler; @@ -29,4 +29,9 @@ public class FileConnectionLog implements ConnectionLog { logger.log(Level.WARNING, "Unable to write connection log entry for connection id " + connectionLogEntry.id(), e); } } -} + + @Override + public void deconstruct() { + logHandler.shutdown(); + } +} \ No newline at end of file diff --git a/jdisc_http_service/src/main/resources/configdefinitions/container.logging.connection-log.def b/jdisc_http_service/src/main/resources/configdefinitions/container.logging.connection-log.def new file mode 100644 index 00000000000..3a2d49120c9 --- /dev/null +++ b/jdisc_http_service/src/main/resources/configdefinitions/container.logging.connection-log.def @@ -0,0 +1,4 @@ +namespace=container.logging + +# Name of the cluster +cluster string \ No newline at end of file diff --git a/jdisc_http_service/src/main/resources/configdefinitions/jdisc.http.container.connection-log.def b/jdisc_http_service/src/main/resources/configdefinitions/jdisc.http.container.connection-log.def deleted file mode 100644 index 522f9e85650..00000000000 --- a/jdisc_http_service/src/main/resources/configdefinitions/jdisc.http.container.connection-log.def +++ /dev/null @@ -1,4 +0,0 @@ -namespace=jdisc.http.container.logging - -# Name of the cluster -cluster string \ No newline at end of file -- cgit v1.2.3