diff --git a/log4j-mongodb/pom.xml b/log4j-mongodb/pom.xml
index b03b534e66e..dcac5e620ec 100644
--- a/log4j-mongodb/pom.xml
+++ b/log4j-mongodb/pom.xml
@@ -141,7 +141,6 @@
junit-jupiter-api
test
-
@@ -151,7 +150,7 @@
org.apache.maven.plugins
maven-surefire-plugin
- true
+ false
diff --git a/log4j-mongodb/src/main/java/org/apache/logging/log4j/mongodb/MongoDbConnection.java b/log4j-mongodb/src/main/java/org/apache/logging/log4j/mongodb/MongoDbConnection.java
index cabc6c73e1e..2b53911088c 100644
--- a/log4j-mongodb/src/main/java/org/apache/logging/log4j/mongodb/MongoDbConnection.java
+++ b/log4j-mongodb/src/main/java/org/apache/logging/log4j/mongodb/MongoDbConnection.java
@@ -16,7 +16,6 @@
*/
package org.apache.logging.log4j.mongodb;
-import com.mongodb.ConnectionString;
import com.mongodb.MongoException;
import com.mongodb.client.MongoClient;
import com.mongodb.client.MongoCollection;
@@ -59,20 +58,17 @@ private static MongoCollection getOrCreateMongoCollection(
}
}
- private final ConnectionString connectionString;
private final MongoCollection collection;
private final MongoClient mongoClient;
public MongoDbConnection(
- final ConnectionString connectionString,
final MongoClient mongoClient,
final MongoDatabase mongoDatabase,
+ final String collectionName,
final boolean isCapped,
final Long sizeInBytes) {
- this.connectionString = connectionString;
this.mongoClient = mongoClient;
- this.collection =
- getOrCreateMongoCollection(mongoDatabase, connectionString.getCollection(), isCapped, sizeInBytes);
+ this.collection = getOrCreateMongoCollection(mongoDatabase, collectionName, isCapped, sizeInBytes);
}
@Override
@@ -106,8 +102,14 @@ public void insertObject(final NoSqlObject object) {
@Override
public String toString() {
- return String.format(
- "Mongo4Connection [connectionString=%s, collection=%s, mongoClient=%s]",
- connectionString, collection, mongoClient);
+ return String.format("Mongo4Connection [collection=%s, mongoClient=%s]", collection, mongoClient);
+ }
+
+ /*
+ * This method is exposed to help support unit tests for the MongoDbProvider class.
+ *
+ */
+ public MongoCollection getCollection() {
+ return this.collection;
}
}
diff --git a/log4j-mongodb/src/main/java/org/apache/logging/log4j/mongodb/MongoDbProvider.java b/log4j-mongodb/src/main/java/org/apache/logging/log4j/mongodb/MongoDbProvider.java
index 8bc0098809c..5b31d6f89ba 100644
--- a/log4j-mongodb/src/main/java/org/apache/logging/log4j/mongodb/MongoDbProvider.java
+++ b/log4j-mongodb/src/main/java/org/apache/logging/log4j/mongodb/MongoDbProvider.java
@@ -18,6 +18,7 @@
import com.mongodb.ConnectionString;
import com.mongodb.MongoClientSettings;
+import com.mongodb.MongoNamespace;
import com.mongodb.client.MongoClient;
import com.mongodb.client.MongoClients;
import com.mongodb.client.MongoDatabase;
@@ -54,9 +55,42 @@ public static class Builder> extends AbstractFilterable.Bui
@PluginAttribute("capped")
private boolean capped = false;
+ @PluginAttribute("collectionName")
+ private String collectionName = null;
+
+ @PluginAttribute("databaseName")
+ private String databaseName = null;
+
@Override
public MongoDbProvider build() {
- return new MongoDbProvider(connectionStringSource, capped, collectionSize);
+ LOGGER.debug("Creating ConnectionString {}...", connectionStringSource);
+ ConnectionString connectionString;
+ try {
+ connectionString = new ConnectionString(connectionStringSource);
+ } catch (final IllegalArgumentException e) {
+ LOGGER.error("Invalid MongoDB connection string `{}`.", connectionStringSource, e);
+ return null;
+ }
+
+ String effectiveDatabaseName = databaseName != null ? databaseName : connectionString.getDatabase();
+ String effectiveCollectionName = collectionName != null ? collectionName : connectionString.getCollection();
+ // Validate the provided databaseName property
+ try {
+ MongoNamespace.checkDatabaseNameValidity(effectiveDatabaseName);
+ } catch (final IllegalArgumentException e) {
+ LOGGER.error("Invalid MongoDB database name `{}`.", effectiveDatabaseName, e);
+ return null;
+ }
+ // Validate the provided collectionName property
+ try {
+ MongoNamespace.checkCollectionNameValidity(effectiveCollectionName);
+ } catch (final IllegalArgumentException e) {
+ LOGGER.error("Invalid MongoDB collection name `{}`.", effectiveCollectionName, e);
+ return null;
+ }
+
+ return new MongoDbProvider(
+ connectionString, capped, collectionSize, effectiveDatabaseName, effectiveCollectionName);
}
public B setConnectionStringSource(final String connectionStringSource) {
@@ -73,6 +107,16 @@ public B setCollectionSize(final long collectionSize) {
this.collectionSize = collectionSize;
return asBuilder();
}
+
+ public B setCollectionName(final String collectionName) {
+ this.collectionName = collectionName;
+ return asBuilder();
+ }
+
+ public B setDatabaseName(final String databaseName) {
+ this.databaseName = databaseName;
+ return asBuilder();
+ }
}
private static final Logger LOGGER = StatusLogger.getLogger();
@@ -94,18 +138,24 @@ public static > B newBuilder() {
private final Long collectionSize;
private final boolean isCapped;
+ private final String collectionName;
private final MongoClient mongoClient;
private final MongoDatabase mongoDatabase;
private final ConnectionString connectionString;
- private MongoDbProvider(final String connectionStringSource, final boolean isCapped, final Long collectionSize) {
- LOGGER.debug("Creating ConnectionString {}...", connectionStringSource);
- this.connectionString = new ConnectionString(connectionStringSource);
+ private MongoDbProvider(
+ final ConnectionString connectionString,
+ final boolean isCapped,
+ final Long collectionSize,
+ final String databaseName,
+ final String collectionName) {
+
LOGGER.debug("Created ConnectionString {}", connectionString);
+ this.connectionString = connectionString;
LOGGER.debug("Creating MongoClientSettings...");
// @formatter:off
final MongoClientSettings settings = MongoClientSettings.builder()
- .applyConnectionString(this.connectionString)
+ .applyConnectionString(connectionString)
.codecRegistry(CODEC_REGISTRIES)
.build();
// @formatter:on
@@ -113,28 +163,29 @@ private MongoDbProvider(final String connectionStringSource, final boolean isCap
LOGGER.debug("Creating MongoClient {}...", settings);
this.mongoClient = MongoClients.create(settings);
LOGGER.debug("Created MongoClient {}", mongoClient);
- final String databaseName = this.connectionString.getDatabase();
LOGGER.debug("Getting MongoDatabase {}...", databaseName);
this.mongoDatabase = this.mongoClient.getDatabase(databaseName);
LOGGER.debug("Got MongoDatabase {}", mongoDatabase);
+ this.collectionName = collectionName;
this.isCapped = isCapped;
this.collectionSize = collectionSize;
}
@Override
public MongoDbConnection getConnection() {
- return new MongoDbConnection(connectionString, mongoClient, mongoDatabase, isCapped, collectionSize);
+ return new MongoDbConnection(mongoClient, mongoDatabase, collectionName, isCapped, collectionSize);
}
@Override
public String toString() {
return String.format(
- "%s [connectionString=%s, collectionSize=%s, isCapped=%s, mongoClient=%s, mongoDatabase=%s]",
+ "%s [connectionString=%s, collectionSize=%s, isCapped=%s, mongoClient=%s, mongoDatabase=%s, collectionName=%s]",
MongoDbProvider.class.getSimpleName(),
connectionString,
collectionSize,
isCapped,
mongoClient,
- mongoDatabase);
+ mongoDatabase,
+ collectionName);
}
}
diff --git a/log4j-mongodb/src/test/java/org/apache/logging/log4j/mongodb/MongoDbCollectionNameIT.java b/log4j-mongodb/src/test/java/org/apache/logging/log4j/mongodb/MongoDbCollectionNameIT.java
new file mode 100644
index 00000000000..60c74dff597
--- /dev/null
+++ b/log4j-mongodb/src/test/java/org/apache/logging/log4j/mongodb/MongoDbCollectionNameIT.java
@@ -0,0 +1,36 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to you under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.logging.log4j.mongodb;
+
+import com.mongodb.client.MongoClient;
+import org.apache.logging.log4j.core.LoggerContext;
+import org.apache.logging.log4j.core.test.junit.LoggerContextSource;
+import org.apache.logging.log4j.test.junit.UsingStatusListener;
+import org.junit.jupiter.api.Test;
+
+@UsingMongoDb
+@LoggerContextSource("MongoDbCollectionNameIT.xml")
+// Print debug status logger output upon failure
+@UsingStatusListener
+class MongoDbCollectionNameIT extends AbstractMongoDbCappedIT {
+
+ @Test
+ @Override
+ protected void test(LoggerContext ctx, MongoClient mongoClient) {
+ super.test(ctx, mongoClient);
+ }
+}
diff --git a/log4j-mongodb/src/test/java/org/apache/logging/log4j/mongodb/MongoDbDatabaseAndCollectionNameIT.java b/log4j-mongodb/src/test/java/org/apache/logging/log4j/mongodb/MongoDbDatabaseAndCollectionNameIT.java
new file mode 100644
index 00000000000..8d399d10ac9
--- /dev/null
+++ b/log4j-mongodb/src/test/java/org/apache/logging/log4j/mongodb/MongoDbDatabaseAndCollectionNameIT.java
@@ -0,0 +1,36 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to you under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.logging.log4j.mongodb;
+
+import com.mongodb.client.MongoClient;
+import org.apache.logging.log4j.core.LoggerContext;
+import org.apache.logging.log4j.core.test.junit.LoggerContextSource;
+import org.apache.logging.log4j.test.junit.UsingStatusListener;
+import org.junit.jupiter.api.Test;
+
+@UsingMongoDb
+@LoggerContextSource("MongoDbDatabaseAndCollectionNameIT.xml")
+// Print debug status logger output upon failure
+@UsingStatusListener
+class MongoDbDatabaseAndCollectionNameIT extends AbstractMongoDbCappedIT {
+
+ @Test
+ @Override
+ protected void test(LoggerContext ctx, MongoClient mongoClient) {
+ super.test(ctx, mongoClient);
+ }
+}
diff --git a/log4j-mongodb/src/test/java/org/apache/logging/log4j/mongodb/MongoDbProviderTest.java b/log4j-mongodb/src/test/java/org/apache/logging/log4j/mongodb/MongoDbProviderTest.java
new file mode 100644
index 00000000000..093c84dbecb
--- /dev/null
+++ b/log4j-mongodb/src/test/java/org/apache/logging/log4j/mongodb/MongoDbProviderTest.java
@@ -0,0 +1,123 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to you under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.logging.log4j.mongodb;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertNull;
+
+import org.junit.jupiter.api.Test;
+
+class MongoDbProviderTest {
+
+ private String validConnectionStringWithoutDatabase = "mongodb://localhost:27017";
+ private String validConnectionStringWithDatabase = "mongodb://localhost:27017/logging";
+ private String validConnectionStringWithDatabaseAndCollection = "mongodb://localhost:27017/logging.logs";
+
+ private String collectionName = "logsTest";
+ private String databaseName = "loggingTest";
+
+ @Test
+ void createProviderWithDatabaseAndCollectionProvidedViaConfig() {
+
+ MongoDbProvider provider = MongoDbProvider.newBuilder()
+ .setConnectionStringSource(this.validConnectionStringWithoutDatabase)
+ .setDatabaseName(this.databaseName)
+ .setCollectionName(this.collectionName)
+ .build();
+
+ assertNotNull(provider, "Returned provider is null");
+ assertEquals(
+ this.collectionName,
+ provider.getConnection().getCollection().getNamespace().getCollectionName(),
+ "Collection names do not match");
+ assertEquals(
+ this.databaseName,
+ provider.getConnection().getCollection().getNamespace().getDatabaseName(),
+ "Database names do not match");
+ }
+
+ @Test
+ void createProviderWithoutDatabaseName() {
+
+ MongoDbProvider provider = MongoDbProvider.newBuilder()
+ .setConnectionStringSource(this.validConnectionStringWithoutDatabase)
+ .build();
+
+ assertNull(provider, "Provider should be null but was not");
+ }
+
+ @Test
+ void createProviderWithoutDatabaseNameWithCollectionName() {
+
+ MongoDbProvider provider = MongoDbProvider.newBuilder()
+ .setConnectionStringSource(this.validConnectionStringWithoutDatabase)
+ .setCollectionName(this.collectionName)
+ .build();
+
+ assertNull(provider, "Provider should be null but was not");
+ }
+
+ @Test
+ void createProviderWithoutCollectionName() {
+
+ MongoDbProvider provider = MongoDbProvider.newBuilder()
+ .setConnectionStringSource(this.validConnectionStringWithoutDatabase)
+ .setDatabaseName(this.databaseName)
+ .build();
+
+ assertNull(provider, "Provider should be null but was not");
+ }
+
+ @Test
+ void createProviderWithDatabaseOnConnectionString() {
+ MongoDbProvider provider = MongoDbProvider.newBuilder()
+ .setConnectionStringSource(this.validConnectionStringWithDatabase)
+ .setCollectionName(this.collectionName)
+ .build();
+
+ assertNotNull(provider, "Provider should not be null");
+ assertEquals(
+ this.collectionName,
+ provider.getConnection().getCollection().getNamespace().getCollectionName(),
+ "Provider should be null but was not");
+ assertEquals(
+ "logging",
+ provider.getConnection().getCollection().getNamespace().getDatabaseName(),
+ "Database names do not match");
+ }
+
+ @Test
+ void createProviderConfigOverridesConnectionString() {
+
+ MongoDbProvider provider = MongoDbProvider.newBuilder()
+ .setConnectionStringSource(this.validConnectionStringWithDatabaseAndCollection)
+ .setCollectionName(this.collectionName)
+ .setDatabaseName(this.databaseName)
+ .build();
+
+ assertNotNull(provider, "Provider should not be null");
+ assertEquals(
+ this.collectionName,
+ provider.getConnection().getCollection().getNamespace().getCollectionName(),
+ "Collection name does not match provided configuration");
+ assertEquals(
+ this.databaseName,
+ provider.getConnection().getCollection().getNamespace().getDatabaseName(),
+ "Database name does not match provided configuration");
+ }
+}
diff --git a/log4j-mongodb/src/test/resources/MongoDbAdditionalFields.xml b/log4j-mongodb/src/test/resources/MongoDbAdditionalFields.xml
index 600296753eb..07047334424 100644
--- a/log4j-mongodb/src/test/resources/MongoDbAdditionalFields.xml
+++ b/log4j-mongodb/src/test/resources/MongoDbAdditionalFields.xml
@@ -22,7 +22,7 @@
https://logging.apache.org/xml/ns/log4j-config-3.xsd">
-
+
diff --git a/log4j-mongodb/src/test/resources/MongoDbAuthFailureIT.xml b/log4j-mongodb/src/test/resources/MongoDbAuthFailureIT.xml
index 797dfb47ed7..03df1ab9f33 100644
--- a/log4j-mongodb/src/test/resources/MongoDbAuthFailureIT.xml
+++ b/log4j-mongodb/src/test/resources/MongoDbAuthFailureIT.xml
@@ -23,7 +23,7 @@
+ connection="mongodb://log4jUser:12345678@localhost:${sys:log4j.mongo.port:-27017}" databaseName="testDb" collectionName="MongoDbAuthFailureIT" />
diff --git a/log4j-mongodb/src/test/resources/MongoDbCappedIntIT.xml b/log4j-mongodb/src/test/resources/MongoDbCappedIntIT.xml
index f1574d396ae..645cac894a8 100644
--- a/log4j-mongodb/src/test/resources/MongoDbCappedIntIT.xml
+++ b/log4j-mongodb/src/test/resources/MongoDbCappedIntIT.xml
@@ -23,7 +23,9 @@
diff --git a/log4j-mongodb/src/test/resources/MongoDbCappedLongIT.xml b/log4j-mongodb/src/test/resources/MongoDbCappedLongIT.xml
index 0ac524fdea7..16de25d2619 100644
--- a/log4j-mongodb/src/test/resources/MongoDbCappedLongIT.xml
+++ b/log4j-mongodb/src/test/resources/MongoDbCappedLongIT.xml
@@ -24,7 +24,9 @@
diff --git a/log4j-mongodb/src/test/resources/MongoDbCollectionNameIT.xml b/log4j-mongodb/src/test/resources/MongoDbCollectionNameIT.xml
new file mode 100644
index 00000000000..ef84c991cae
--- /dev/null
+++ b/log4j-mongodb/src/test/resources/MongoDbCollectionNameIT.xml
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/log4j-mongodb/src/test/resources/MongoDbDatabaseAndCollectionNameIT.xml b/log4j-mongodb/src/test/resources/MongoDbDatabaseAndCollectionNameIT.xml
new file mode 100644
index 00000000000..adf32a000d9
--- /dev/null
+++ b/log4j-mongodb/src/test/resources/MongoDbDatabaseAndCollectionNameIT.xml
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/log4j-mongodb/src/test/resources/MongoDbIT.xml b/log4j-mongodb/src/test/resources/MongoDbIT.xml
index df713f01795..2ed62df6fe7 100644
--- a/log4j-mongodb/src/test/resources/MongoDbIT.xml
+++ b/log4j-mongodb/src/test/resources/MongoDbIT.xml
@@ -22,7 +22,7 @@
https://logging.apache.org/xml/ns/log4j-config-3.xsd">
-
+
diff --git a/log4j-mongodb/src/test/resources/MongoDbMapMessageIT.xml b/log4j-mongodb/src/test/resources/MongoDbMapMessageIT.xml
index 774fa4bfaed..64bb492a720 100644
--- a/log4j-mongodb/src/test/resources/MongoDbMapMessageIT.xml
+++ b/log4j-mongodb/src/test/resources/MongoDbMapMessageIT.xml
@@ -22,7 +22,7 @@
https://logging.apache.org/xml/ns/log4j-config-3.xsd">
-
+
diff --git a/src/changelog/.3.x.x/update_org_log4j_mongodb.xml b/src/changelog/.3.x.x/update_org_log4j_mongodb.xml
new file mode 100644
index 00000000000..2f7c1f37760
--- /dev/null
+++ b/src/changelog/.3.x.x/update_org_log4j_mongodb.xml
@@ -0,0 +1,8 @@
+
+
+
+ Update log4j-mongodb to allow collectionName and databaseName to be defined via the config file
+
diff --git a/src/site/antora/modules/ROOT/examples/manual/appenders/database/nosql-mongo-keys.json b/src/site/antora/modules/ROOT/examples/manual/appenders/database/nosql-mongo-keys.json
index 2b47690c0b5..cac61efc980 100644
--- a/src/site/antora/modules/ROOT/examples/manual/appenders/database/nosql-mongo-keys.json
+++ b/src/site/antora/modules/ROOT/examples/manual/appenders/database/nosql-mongo-keys.json
@@ -5,7 +5,9 @@
"NoSql": {
"name": "MONGO",
"MongoDb": {
- "connection": "mongodb://${env:DB_USER}:${env:DB_PASS}@localhost:27017/logging.logs"
+ "connection": "mongodb://${env:DB_USER}:${env:DB_PASS}@localhost:27017",
+ "databaseName": "logging",
+ "collectionName": "logs"
},
"KeyValuePair": [
{
diff --git a/src/site/antora/modules/ROOT/examples/manual/appenders/database/nosql-mongo-keys.properties b/src/site/antora/modules/ROOT/examples/manual/appenders/database/nosql-mongo-keys.properties
index f0b64894e28..30713a12737 100644
--- a/src/site/antora/modules/ROOT/examples/manual/appenders/database/nosql-mongo-keys.properties
+++ b/src/site/antora/modules/ROOT/examples/manual/appenders/database/nosql-mongo-keys.properties
@@ -19,7 +19,10 @@
Appenders.0.type = NoSql
Appenders.0.name = MONGO
Appenders.0.provider.type = MongoDB
-Appenders.0.provider.connection = mongodb://${env:DB_USER}:${env:DB_PASS}@localhost:27017/logging.logs
+Appenders.0.provider.connection = mongodb://${env:DB_USER}:${env:DB_PASS}@localhost:27017
+Appenders.0.provider.databaseName = logging
+Appenders.0.provider.collectionName = logs
+
Appenders.0.kv[0].type = KeyValuePair
Appenders.0.kv[0].key = startTime
diff --git a/src/site/antora/modules/ROOT/examples/manual/appenders/database/nosql-mongo-keys.xml b/src/site/antora/modules/ROOT/examples/manual/appenders/database/nosql-mongo-keys.xml
index cd9f458ac3a..60232ae5be6 100644
--- a/src/site/antora/modules/ROOT/examples/manual/appenders/database/nosql-mongo-keys.xml
+++ b/src/site/antora/modules/ROOT/examples/manual/appenders/database/nosql-mongo-keys.xml
@@ -23,7 +23,7 @@
-
+
diff --git a/src/site/antora/modules/ROOT/examples/manual/appenders/database/nosql-mongo-keys.yaml b/src/site/antora/modules/ROOT/examples/manual/appenders/database/nosql-mongo-keys.yaml
index 2cb5df2c85f..90a8ad766d4 100644
--- a/src/site/antora/modules/ROOT/examples/manual/appenders/database/nosql-mongo-keys.yaml
+++ b/src/site/antora/modules/ROOT/examples/manual/appenders/database/nosql-mongo-keys.yaml
@@ -20,7 +20,9 @@ Configuration:
NoSql:
name: "MONGO"
MongoDb:
- connection: "mongodb://${env:DB_USER}:${env:DB_PASS}@localhost:27017/logging.logs"
+ connection: "mongodb://${env:DB_USER}:${env:DB_PASS}@localhost:27017"
+ databaseName: "logging"
+ collectionName: "logs"
KeyValuePair:
- key: "startTime"
value: "${date:yyyy-MM-dd hh:mm:ss.SSS}" # <1>
diff --git a/src/site/antora/modules/ROOT/examples/manual/appenders/database/nosql-mongo.json b/src/site/antora/modules/ROOT/examples/manual/appenders/database/nosql-mongo.json
index d06b3a190f6..cf01b6a549a 100644
--- a/src/site/antora/modules/ROOT/examples/manual/appenders/database/nosql-mongo.json
+++ b/src/site/antora/modules/ROOT/examples/manual/appenders/database/nosql-mongo.json
@@ -10,7 +10,9 @@
"NoSql": {
"name": "MONGO",
"MongoDb": {
- "connection": "mongodb://${env:DB_USER}:${env:DB_PASS}@localhost:27017/logging.logs"
+ "connection": "mongodb://${env:DB_USER}:${env:DB_PASS}@localhost:27017",
+ "databaseName" : "logging",
+ "collectionName": "logs"
}
}
// end::appender[]
diff --git a/src/site/antora/modules/ROOT/examples/manual/appenders/database/nosql-mongo.properties b/src/site/antora/modules/ROOT/examples/manual/appenders/database/nosql-mongo.properties
index 2853c83137c..c5cafac439c 100644
--- a/src/site/antora/modules/ROOT/examples/manual/appenders/database/nosql-mongo.properties
+++ b/src/site/antora/modules/ROOT/examples/manual/appenders/database/nosql-mongo.properties
@@ -22,7 +22,9 @@ Appenders.0.layout.type = JsonTemplateLayout
Appenders.1.type = NoSql
Appenders.1.name = MONGO
Appenders.1.provider.type = MongoDB
-Appenders.1.provider.connection = mongodb://${env:DB_USER}:${env:DB_PASS}@localhost:27017/logging.logs
+Appenders.1.provider.connection = mongodb://${env:DB_USER}:${env:DB_PASS}@localhost:27017
+Appenders.1.provider.databaseName = logging
+Appenders.1.provider.collectionName = logs
# end::appender[]
# tag::loggers[]
diff --git a/src/site/antora/modules/ROOT/examples/manual/appenders/database/nosql-mongo.xml b/src/site/antora/modules/ROOT/examples/manual/appenders/database/nosql-mongo.xml
index 31fe89f2f19..e05746405d6 100644
--- a/src/site/antora/modules/ROOT/examples/manual/appenders/database/nosql-mongo.xml
+++ b/src/site/antora/modules/ROOT/examples/manual/appenders/database/nosql-mongo.xml
@@ -27,7 +27,7 @@
-
+
diff --git a/src/site/antora/modules/ROOT/examples/manual/appenders/database/nosql-mongo.yaml b/src/site/antora/modules/ROOT/examples/manual/appenders/database/nosql-mongo.yaml
index f5bd4b66121..6469b81593c 100644
--- a/src/site/antora/modules/ROOT/examples/manual/appenders/database/nosql-mongo.yaml
+++ b/src/site/antora/modules/ROOT/examples/manual/appenders/database/nosql-mongo.yaml
@@ -24,7 +24,9 @@ Configuration:
NoSql:
name: "MONGO"
MongoDb:
- connection: "mongodb://${env:DB_USER}:${env:DB_PASS}@localhost:27017/logging.logs"
+ connection: "mongodb://${env:DB_USER}:${env:DB_PASS}@localhost:27017"
+ databaseName: "logging"
+ collectionName: "logs"
# end::appender[]
Loggers:
# tag::loggers[]
diff --git a/src/site/antora/modules/ROOT/pages/manual/appenders/database.adoc b/src/site/antora/modules/ROOT/pages/manual/appenders/database.adoc
index 079891da044..09503ec45a5 100644
--- a/src/site/antora/modules/ROOT/pages/manual/appenders/database.adoc
+++ b/src/site/antora/modules/ROOT/pages/manual/appenders/database.adoc
@@ -817,6 +817,29 @@ for its format.
**Required**
+| [[MongoDbProvider-attr-databaseName]]databaseName
+| 'string'
+|
+|
+It specifies the name of the database for the appender to use.
+
+Overrides the value provided in the connection string if present.
+
+**Required**
+
+| [[MongoDbProvider-attr-collectionName]]collectionName
+| 'string'
+|
+|
+It specifies the name of the collection for the appender to use.
+For backward compatibility, the collection name can also be specified in the
+https://mongodb.github.io/mongo-java-driver/5.0/apidocs/mongodb-driver-core/com/mongodb/ConnectionString.html[Java-specific connection string]
+If collection name is specified in both places, the value provided here will be used.
+
+**Required**
+
+
+
| [[MongoDbProvider-attr-capped]]capped
| `boolean`
| `false`