diff options
author | Morten Tokle <mortent@verizonmedia.com> | 2021-01-19 08:40:15 +0100 |
---|---|---|
committer | Morten Tokle <mortent@verizonmedia.com> | 2021-01-19 10:09:27 +0100 |
commit | 274078dd8e9f90bbe86ef07a89acfc2437e22cec (patch) | |
tree | d2ca31530bb9d791a928a54c992d700785ca36bf /config-model | |
parent | 5ce314d5989ce4753004d8e13faafb905217bc8b (diff) |
Write connection log to file
Diffstat (limited to 'config-model')
3 files changed, 59 insertions, 3 deletions
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 new file mode 100644 index 00000000000..f3f83a30f15 --- /dev/null +++ b/config-model/src/main/java/com/yahoo/vespa/model/container/component/ConnectionLogComponent.java @@ -0,0 +1,22 @@ +// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. + +package com.yahoo.vespa.model.container.component; + +import com.yahoo.container.logging.ConnectionLog; +import com.yahoo.jdisc.http.container.logging.ConnectionLogConfig; +import com.yahoo.osgi.provider.model.ComponentModel; + +public class ConnectionLogComponent extends SimpleComponent implements ConnectionLogConfig.Producer { + + private final String clusterName; + + public ConnectionLogComponent(Class<? extends ConnectionLog> cls, String clusterName) { + super(new ComponentModel(cls.getName(), null, "jdisc_http_service", null)); + this.clusterName = clusterName; + } + + @Override + public void getConfig(ConnectionLogConfig.Builder builder) { + builder.cluster(clusterName); + } +} diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilder.java index dc7b03b0064..15a37813150 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilder.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/container/xml/ContainerModelBuilder.java @@ -31,7 +31,7 @@ import com.yahoo.config.provision.HostName; import com.yahoo.config.provision.NodeResources; import com.yahoo.config.provision.NodeType; import com.yahoo.config.provision.Zone; -import com.yahoo.container.logging.SimpleConnectionLog; +import com.yahoo.container.logging.FileConnectionLog; import com.yahoo.jdisc.http.server.jetty.VoidConnectionLog; import com.yahoo.osgi.provider.model.ComponentModel; import com.yahoo.search.rendering.RendererRegistry; @@ -63,6 +63,7 @@ import com.yahoo.vespa.model.container.IdentityProvider; import com.yahoo.vespa.model.container.SecretStore; import com.yahoo.vespa.model.container.component.AccessLogComponent; import com.yahoo.vespa.model.container.component.BindingPattern; +import com.yahoo.vespa.model.container.component.ConnectionLogComponent; import com.yahoo.vespa.model.container.component.FileStatusHandlerComponent; import com.yahoo.vespa.model.container.component.Handler; import com.yahoo.vespa.model.container.component.SimpleComponent; @@ -349,9 +350,9 @@ public class ContainerModelBuilder extends ConfigModelBuilder<ContainerModel> { // Add connection log if access log is configured if (cluster.getAllComponents().stream().anyMatch(component -> component instanceof AccessLogComponent)) { - cluster.addSimpleComponent(SimpleConnectionLog.class.getName(), null, "jdisc_http_service"); + cluster.addComponent(new ConnectionLogComponent(FileConnectionLog.class, cluster.getName())); } else { - cluster.addSimpleComponent(VoidConnectionLog.class.getName(), null, "jdisc_http_service"); + cluster.addComponent(new ConnectionLogComponent(VoidConnectionLog.class, cluster.getName())); } } 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 00ab175f496..a283b88792f 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,8 +4,11 @@ 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.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; import org.junit.Test; @@ -96,4 +99,34 @@ public class AccessLogTest extends ContainerModelBuilderTestBase { } } + @Test + public void connection_log_configured_when_access_log_not_disabled() { + Element clusterElem = DomBuilderTest.parse( + "<container id='default' version='1.0'>", + " <accesslog type='vespa' ", + " fileNamePattern='pattern' rotationInterval='interval' />", + " <accesslog type='json' ", + " fileNamePattern='pattern' rotationInterval='interval' />", + nodesXml, + "</container>" ); + createModel(root, clusterElem); + Component<?, ?> connectionLogComponent = getContainerComponent("default", FileConnectionLog.class.getName()); + assertNotNull(connectionLogComponent); + ConnectionLogConfig config = root.getConfig(ConnectionLogConfig.class, "default/component/com.yahoo.container.logging.FileConnectionLog"); + assertEquals("default", config.cluster()); + } + + @Test + public void connection_log_disabled_when_access_log_disabled() { + Element clusterElem = DomBuilderTest.parse( + "<container id='default' version='1.0'>", + " <accesslog type='disabled' />", + nodesXml, + "</container>" ); + createModel(root, clusterElem); + Component<?, ?> voidConnectionLogComponent = getContainerComponent("default", VoidConnectionLog.class.getName()); + assertNotNull(voidConnectionLogComponent); + Component<?, ?> fileConnectionLogComponent = getContainerComponent("default", FileConnectionLog.class.getName()); + assertNull(fileConnectionLogComponent); + } } |