From e74457a1448189978e791fb3efe76d5fe8370ff7 Mon Sep 17 00:00:00 2001 From: Eran Leshem <1707552+eranl@users.noreply.github.com> Date: Tue, 29 Oct 2024 16:00:43 +0200 Subject: [PATCH] feat: Improve Logging (#1892) * feat: Improve logging * fix formatting --- .../java/com/google/cloud/firestore/CollectionGroup.java | 6 ++++++ .../java/com/google/cloud/firestore/DocumentChange.java | 7 +++++++ .../com/google/cloud/firestore/GenericQuerySnapshot.java | 7 +++++++ .../com/google/cloud/firestore/SilenceableBidiStream.java | 8 ++++---- .../java/com/google/cloud/firestore/StreamableQuery.java | 5 +++++ .../main/java/com/google/cloud/firestore/VectorQuery.java | 8 ++++++++ .../com/google/cloud/firestore/VectorQueryOptions.java | 7 +++++++ .../main/java/com/google/cloud/firestore/VectorValue.java | 5 +++++ .../src/main/java/com/google/cloud/firestore/Watch.java | 6 +++--- 9 files changed, 52 insertions(+), 7 deletions(-) diff --git a/google-cloud-firestore/src/main/java/com/google/cloud/firestore/CollectionGroup.java b/google-cloud-firestore/src/main/java/com/google/cloud/firestore/CollectionGroup.java index 3026e5183..d81a0489e 100644 --- a/google-cloud-firestore/src/main/java/com/google/cloud/firestore/CollectionGroup.java +++ b/google-cloud-firestore/src/main/java/com/google/cloud/firestore/CollectionGroup.java @@ -174,4 +174,10 @@ private void consumePartitions( } consumer.apply(new QueryPartition(partitionQuery, lastCursor, null)); } + + @SuppressWarnings("MethodDoesntCallSuperMethod") + @Override + public String toString() { + return String.format("CollectionGroup{partitionQuery=%s, options=%s}", partitionQuery, options); + } } diff --git a/google-cloud-firestore/src/main/java/com/google/cloud/firestore/DocumentChange.java b/google-cloud-firestore/src/main/java/com/google/cloud/firestore/DocumentChange.java index cb2e8e0d5..5bfe91e74 100644 --- a/google-cloud-firestore/src/main/java/com/google/cloud/firestore/DocumentChange.java +++ b/google-cloud-firestore/src/main/java/com/google/cloud/firestore/DocumentChange.java @@ -114,4 +114,11 @@ public boolean equals(Object obj) { public int hashCode() { return Objects.hash(type, document, oldIndex, newIndex); } + + @Override + public String toString() { + return String.format( + "DocumentChange{type=%s, document=%s, oldIndex=%d, newIndex=%d}", + type, document, oldIndex, newIndex); + } } diff --git a/google-cloud-firestore/src/main/java/com/google/cloud/firestore/GenericQuerySnapshot.java b/google-cloud-firestore/src/main/java/com/google/cloud/firestore/GenericQuerySnapshot.java index a7b02e22a..cd7348de4 100644 --- a/google-cloud-firestore/src/main/java/com/google/cloud/firestore/GenericQuerySnapshot.java +++ b/google-cloud-firestore/src/main/java/com/google/cloud/firestore/GenericQuerySnapshot.java @@ -162,4 +162,11 @@ public boolean equals(Object o) { public int hashCode() { return Objects.hash(query, this.getDocumentChanges(), this.getDocuments()); } + + @Override + public String toString() { + return String.format( + "%s{query=%s, readTime=%s, documentChanges=%s, documents=%s}", + getClass().getSimpleName(), query, readTime, documentChanges, documents); + } } diff --git a/google-cloud-firestore/src/main/java/com/google/cloud/firestore/SilenceableBidiStream.java b/google-cloud-firestore/src/main/java/com/google/cloud/firestore/SilenceableBidiStream.java index fa358ecaa..634e08ca8 100644 --- a/google-cloud-firestore/src/main/java/com/google/cloud/firestore/SilenceableBidiStream.java +++ b/google-cloud-firestore/src/main/java/com/google/cloud/firestore/SilenceableBidiStream.java @@ -45,11 +45,11 @@ */ final class SilenceableBidiStream implements BidiStreamObserver { + private static final Logger LOGGER = Logger.getLogger(SilenceableBidiStream.class.getName()); private final ClientStream stream; private final BidiStreamObserver delegate; private boolean silence = false; - private static final Logger LOGGER = Logger.getLogger(Watch.class.getName()); SilenceableBidiStream( BidiStreamObserver responseObserverT, @@ -63,17 +63,17 @@ public boolean isSilenced() { } public void send(RequestT request) { - LOGGER.info(stream.toString()); + LOGGER.fine(stream.toString()); stream.send(request); } public void closeSend() { - LOGGER.info(stream::toString); + LOGGER.fine(stream::toString); stream.closeSend(); } public void closeSendAndSilence() { - LOGGER.info(stream::toString); + LOGGER.fine(stream::toString); silence = true; stream.closeSend(); } diff --git a/google-cloud-firestore/src/main/java/com/google/cloud/firestore/StreamableQuery.java b/google-cloud-firestore/src/main/java/com/google/cloud/firestore/StreamableQuery.java index 24be9e69c..bf66a41ab 100644 --- a/google-cloud-firestore/src/main/java/com/google/cloud/firestore/StreamableQuery.java +++ b/google-cloud-firestore/src/main/java/com/google/cloud/firestore/StreamableQuery.java @@ -397,4 +397,9 @@ private boolean isRetryableError(Throwable throwable, Set retry } return false; } + + @Override + public String toString() { + return String.format("%s{options=%s}", getClass().getSimpleName(), options); + } } diff --git a/google-cloud-firestore/src/main/java/com/google/cloud/firestore/VectorQuery.java b/google-cloud-firestore/src/main/java/com/google/cloud/firestore/VectorQuery.java index 2f8c2ac42..7cdc6ebb5 100644 --- a/google-cloud-firestore/src/main/java/com/google/cloud/firestore/VectorQuery.java +++ b/google-cloud-firestore/src/main/java/com/google/cloud/firestore/VectorQuery.java @@ -171,6 +171,14 @@ VectorQuerySnapshot createSnaphot( return VectorQuerySnapshot.withDocuments(this, readTime, documents); } + @SuppressWarnings("MethodDoesntCallSuperMethod") + @Override + public String toString() { + return String.format( + "VectorQuery{query=%s, vectorField=%s, queryVector=%s, limit=%d, distanceMeasure=%s, options=%s, options=%s}", + query, vectorField, queryVector, limit, distanceMeasure, options, options); + } + /** * The distance measure to use when comparing vectors in a {@link VectorQuery}. * diff --git a/google-cloud-firestore/src/main/java/com/google/cloud/firestore/VectorQueryOptions.java b/google-cloud-firestore/src/main/java/com/google/cloud/firestore/VectorQueryOptions.java index 38ca68d23..f06cc9469 100644 --- a/google-cloud-firestore/src/main/java/com/google/cloud/firestore/VectorQueryOptions.java +++ b/google-cloud-firestore/src/main/java/com/google/cloud/firestore/VectorQueryOptions.java @@ -148,6 +148,13 @@ public boolean equals(Object obj) { && Objects.equals(distanceThreshold, otherOptions.distanceThreshold); } + @Override + public String toString() { + return String.format( + "VectorQueryOptions{distanceResultField=%s, distanceThreshold=%s}", + distanceResultField, distanceThreshold); + } + /** Default VectorQueryOptions instance. */ private static VectorQueryOptions DEFAULT = newBuilder().build(); diff --git a/google-cloud-firestore/src/main/java/com/google/cloud/firestore/VectorValue.java b/google-cloud-firestore/src/main/java/com/google/cloud/firestore/VectorValue.java index 347e721f1..aac7dd11e 100644 --- a/google-cloud-firestore/src/main/java/com/google/cloud/firestore/VectorValue.java +++ b/google-cloud-firestore/src/main/java/com/google/cloud/firestore/VectorValue.java @@ -76,4 +76,9 @@ MapValue toProto() { int size() { return this.values.length; } + + @Override + public String toString() { + return String.format("VectorValue{values=%s}", Arrays.toString(values)); + } } diff --git a/google-cloud-firestore/src/main/java/com/google/cloud/firestore/Watch.java b/google-cloud-firestore/src/main/java/com/google/cloud/firestore/Watch.java index 52d18cecc..ef57821d4 100644 --- a/google-cloud-firestore/src/main/java/com/google/cloud/firestore/Watch.java +++ b/google-cloud-firestore/src/main/java/com/google/cloud/firestore/Watch.java @@ -60,6 +60,8 @@ * synchronization. */ final class Watch implements BidiStreamObserver { + private static final Logger LOGGER = Logger.getLogger(Watch.class.getName()); + /** * Target ID used by watch. Watch uses a fixed target id since we only support one target per * stream. The actual target ID we use is arbitrary. @@ -115,8 +117,6 @@ static class ChangeSet { List updates = new ArrayList<>(); } - private static final Logger LOGGER = Logger.getLogger(Watch.class.getName()); - /** * @param firestore The Firestore Database client. * @param query The query that is used to order the document snapshots returned by this watch. @@ -474,7 +474,7 @@ private void pushSnapshot(final Timestamp readTime, ByteString nextResumeToken) if (!hasPushed || !changes.isEmpty()) { final QuerySnapshot querySnapshot = QuerySnapshot.withChanges(query, readTime, documentSet, changes); - LOGGER.info(querySnapshot.toString()); + LOGGER.fine(querySnapshot.toString()); userCallbackExecutor.execute(() -> listener.onEvent(querySnapshot, null)); hasPushed = true; }