Skip to content

Commit e445622

Browse files
committed
Improve info-level logging for MongoClient construction
* include client metadata document as JSON * include MongoClientSettings#toString JAVA-4439
1 parent e0bc8fa commit e445622

File tree

7 files changed

+34
-18
lines changed

7 files changed

+34
-18
lines changed

driver-core/src/main/com/mongodb/internal/connection/AbstractMultiServerCluster.java

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -73,10 +73,6 @@ private ServerTuple(final ClusterableServer server, final ServerDescription desc
7373
isTrue("connection mode is multiple", settings.getMode() == ClusterConnectionMode.MULTIPLE);
7474
clusterType = settings.getRequiredClusterType();
7575
replicaSetName = settings.getRequiredReplicaSetName();
76-
77-
if (LOGGER.isInfoEnabled()) {
78-
LOGGER.info(format("Cluster created with settings %s", settings.getShortDescription()));
79-
}
8076
}
8177

8278
ClusterType getClusterType() {

driver-core/src/main/com/mongodb/internal/connection/SingleServerCluster.java

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -51,10 +51,6 @@ public SingleServerCluster(final ClusterId clusterId, final ClusterSettings sett
5151
isTrue("one server in a direct cluster", settings.getHosts().size() == 1);
5252
isTrue("connection mode is single", settings.getMode() == ClusterConnectionMode.SINGLE);
5353

54-
if (LOGGER.isInfoEnabled()) {
55-
LOGGER.info(format("Cluster created with settings %s", settings.getShortDescription()));
56-
}
57-
5854
server = new AtomicReference<>();
5955
// synchronized in the constructor because the change listener is re-entrant to this instance.
6056
// In other words, we are leaking a reference to "this" from the constructor.

driver-legacy/src/main/com/mongodb/MongoClient.java

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@
2626
import com.mongodb.connection.ClusterConnectionMode;
2727
import com.mongodb.connection.ClusterDescription;
2828
import com.mongodb.connection.ClusterSettings;
29+
import com.mongodb.diagnostics.logging.Logger;
30+
import com.mongodb.diagnostics.logging.Loggers;
2931
import com.mongodb.event.ClusterListener;
3032
import com.mongodb.internal.IgnorableRequestContext;
3133
import com.mongodb.internal.binding.ConnectionSource;
@@ -51,7 +53,9 @@
5153
import java.util.concurrent.atomic.AtomicBoolean;
5254
import java.util.stream.Collectors;
5355

56+
import static com.mongodb.internal.connection.ClientMetadataHelper.createClientMetadataDocument;
5457
import static com.mongodb.internal.connection.ServerAddressHelper.createServerAddress;
58+
import static java.lang.String.format;
5559
import static java.util.Collections.singletonList;
5660
import static java.util.concurrent.TimeUnit.SECONDS;
5761

@@ -109,6 +113,7 @@
109113
* @since 2.10.0
110114
*/
111115
public class MongoClient implements Closeable {
116+
private static final Logger LOGGER = Loggers.getLogger("client");
112117

113118
private final ConcurrentMap<String, DB> dbCache = new ConcurrentHashMap<>();
114119

@@ -228,10 +233,13 @@ public MongoClient(final MongoClientSettings settings, @Nullable final MongoDriv
228233
private MongoClient(final MongoClientSettings settings,
229234
@Nullable final MongoClientOptions options,
230235
@Nullable final MongoDriverInformation mongoDriverInformation) {
231-
delegate = new MongoClientImpl(settings, wrapMongoDriverInformation(mongoDriverInformation));
236+
MongoDriverInformation wrappedMongoDriverInformation = wrapMongoDriverInformation(mongoDriverInformation);
237+
delegate = new MongoClientImpl(settings, wrappedMongoDriverInformation);
232238
this.options = options != null ? options : MongoClientOptions.builder(settings).build();
233239
cursorCleaningService = this.options.isCursorFinalizerEnabled() ? createCursorCleaningService() : null;
234240
this.closed = new AtomicBoolean();
241+
LOGGER.info(format("MongoClient with metadata %s created with settings %s",
242+
createClientMetadataDocument(settings.getApplicationName(), wrappedMongoDriverInformation).toJson(), settings));
235243
}
236244

237245
private static MongoDriverInformation wrapMongoDriverInformation(@Nullable final MongoDriverInformation mongoDriverInformation) {

driver-reactive-streams/src/main/com/mongodb/reactivestreams/client/MongoClients.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -134,7 +134,8 @@ public static CodecRegistry getDefaultCodecRegistry() {
134134
private static MongoClient createMongoClient(final MongoClientSettings settings,
135135
@Nullable final MongoDriverInformation mongoDriverInformation, final StreamFactory streamFactory,
136136
final StreamFactory heartbeatStreamFactory, @Nullable final Closeable externalResourceCloser) {
137-
return new MongoClientImpl(settings, createCluster(settings, wrapMongoDriverInformation(mongoDriverInformation),
137+
MongoDriverInformation wrappedMongoDriverInformation = wrapMongoDriverInformation(mongoDriverInformation);
138+
return new MongoClientImpl(settings, wrappedMongoDriverInformation, createCluster(settings, wrappedMongoDriverInformation,
138139
streamFactory, heartbeatStreamFactory), externalResourceCloser);
139140
}
140141

driver-reactive-streams/src/main/com/mongodb/reactivestreams/client/internal/MongoClientImpl.java

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import com.mongodb.ClientSessionOptions;
2121
import com.mongodb.MongoClientException;
2222
import com.mongodb.MongoClientSettings;
23+
import com.mongodb.MongoDriverInformation;
2324
import com.mongodb.connection.ClusterDescription;
2425
import com.mongodb.diagnostics.logging.Logger;
2526
import com.mongodb.diagnostics.logging.Loggers;
@@ -47,6 +48,8 @@
4748
import java.util.concurrent.atomic.AtomicBoolean;
4849

4950
import static com.mongodb.assertions.Assertions.notNull;
51+
import static com.mongodb.internal.connection.ClientMetadataHelper.createClientMetadataDocument;
52+
import static java.lang.String.format;
5053
import static org.bson.codecs.configuration.CodecRegistries.withUuidRepresentation;
5154

5255

@@ -68,17 +71,18 @@ public final class MongoClientImpl implements MongoClient {
6871
private final Crypt crypt;
6972
private final AtomicBoolean closed;
7073

71-
public MongoClientImpl(final MongoClientSettings settings, final Cluster cluster, @Nullable final Closeable externalResourceCloser) {
72-
this(settings, cluster, null, externalResourceCloser);
74+
public MongoClientImpl(final MongoClientSettings settings, final MongoDriverInformation mongoDriverInformation, final Cluster cluster,
75+
@Nullable final Closeable externalResourceCloser) {
76+
this(settings, mongoDriverInformation, cluster, null, externalResourceCloser);
7377
}
7478

75-
public MongoClientImpl(final MongoClientSettings settings, final Cluster cluster, @Nullable final OperationExecutor executor) {
76-
this(settings, cluster, executor, null);
79+
public MongoClientImpl(final MongoClientSettings settings, final MongoDriverInformation mongoDriverInformation, final Cluster cluster,
80+
@Nullable final OperationExecutor executor) {
81+
this(settings, mongoDriverInformation, cluster, executor, null);
7782
}
7883

79-
private MongoClientImpl(final MongoClientSettings settings, final Cluster cluster,
80-
@Nullable final OperationExecutor executor,
81-
@Nullable final Closeable externalResourceCloser) {
84+
private MongoClientImpl(final MongoClientSettings settings, final MongoDriverInformation mongoDriverInformation, final Cluster cluster,
85+
@Nullable final OperationExecutor executor, @Nullable final Closeable externalResourceCloser) {
8286
this.settings = notNull("settings", settings);
8387
this.cluster = notNull("cluster", cluster);
8488
this.serverSessionPool = new ServerSessionPool(cluster, settings.getServerApi());
@@ -99,6 +103,8 @@ private MongoClientImpl(final MongoClientSettings settings, final Cluster cluste
99103
settings.getRetryWrites(), settings.getRetryReads(),
100104
settings.getUuidRepresentation(), this.executor);
101105
this.closed = new AtomicBoolean();
106+
LOGGER.info(format("MongoClient with metadata %s created with settings %s",
107+
createClientMetadataDocument(settings.getApplicationName(), mongoDriverInformation).toJson(), settings));
102108
}
103109

104110
Cluster getCluster() {

driver-reactive-streams/src/test/unit/com/mongodb/reactivestreams/client/internal/MongoClientImplTest.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818

1919
import com.mongodb.ClientSessionOptions;
2020
import com.mongodb.MongoClientSettings;
21+
import com.mongodb.MongoDriverInformation;
2122
import com.mongodb.ReadConcern;
2223
import com.mongodb.ServerAddress;
2324
import com.mongodb.TransactionOptions;
@@ -216,6 +217,7 @@ void testStartSession() {
216217
}
217218

218219
private MongoClientImpl createMongoClient() {
219-
return new MongoClientImpl(MongoClientSettings.builder().build(), mock(Cluster.class), OPERATION_EXECUTOR);
220+
return new MongoClientImpl(MongoClientSettings.builder().build(),
221+
MongoDriverInformation.builder().driverName("reactive-streams").build(), mock(Cluster.class), OPERATION_EXECUTOR);
220222
}
221223
}

driver-sync/src/main/com/mongodb/client/internal/MongoClientImpl.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,8 @@
3636
import com.mongodb.connection.SocketStreamFactory;
3737
import com.mongodb.connection.StreamFactory;
3838
import com.mongodb.connection.StreamFactoryFactory;
39+
import com.mongodb.diagnostics.logging.Logger;
40+
import com.mongodb.diagnostics.logging.Loggers;
3941
import com.mongodb.internal.client.model.changestream.ChangeStreamLevel;
4042
import com.mongodb.internal.connection.Cluster;
4143
import com.mongodb.internal.connection.DefaultClusterFactory;
@@ -52,10 +54,13 @@
5254

5355
import static com.mongodb.assertions.Assertions.notNull;
5456
import static com.mongodb.client.internal.Crypts.createCrypt;
57+
import static com.mongodb.internal.connection.ClientMetadataHelper.createClientMetadataDocument;
5558
import static com.mongodb.internal.event.EventListenerHelper.getCommandListener;
59+
import static java.lang.String.format;
5660
import static org.bson.codecs.configuration.CodecRegistries.withUuidRepresentation;
5761

5862
public final class MongoClientImpl implements MongoClient {
63+
private static final Logger LOGGER = Loggers.getLogger("client");
5964

6065
private final MongoClientSettings settings;
6166
private final MongoDriverInformation mongoDriverInformation;
@@ -79,6 +84,8 @@ public MongoClientImpl(final Cluster cluster, final MongoDriverInformation mongo
7984
withUuidRepresentation(settings.getCodecRegistry(), settings.getUuidRepresentation()), this, operationExecutor,
8085
autoEncryptionSettings == null ? null : createCrypt(this, autoEncryptionSettings), settings.getServerApi(),
8186
(SynchronousContextProvider) settings.getContextProvider());
87+
LOGGER.info(format("MongoClient with metadata %s created with settings %s",
88+
createClientMetadataDocument(settings.getApplicationName(), mongoDriverInformation).toJson(), settings));
8289
}
8390

8491
@Override

0 commit comments

Comments
 (0)