From cd3fc2f816b6039065da11134d2dc6d2058e498d Mon Sep 17 00:00:00 2001 From: Jonatan Ivanov Date: Fri, 16 May 2025 14:32:23 -0700 Subject: [PATCH] Change log level from DEBUG to INFO for ObservationHandlers The features are disabled by default and users need to explicitly enable them. Probably it makes more sense to log on INFO level so that users don't need to change the log level if they use the default behavior of Spring Boot. See gh-3003 See gh-3127 --- .../ChatClientPromptContentObservationHandler.java | 2 +- .../ChatClientPromptContentObservationHandlerTests.java | 6 +++--- .../observation/ChatModelCompletionObservationHandler.java | 2 +- .../ChatModelPromptContentObservationHandler.java | 2 +- .../ImageModelPromptContentObservationHandler.java | 2 +- .../ChatModelCompletionObservationHandlerTests.java | 6 +++--- .../ChatModelPromptContentObservationHandlerTests.java | 6 +++--- .../ImageModelPromptContentObservationHandlerTests.java | 6 +++--- .../VectorStoreQueryResponseObservationHandler.java | 2 +- .../VectorStoreQueryResponseObservationHandlerTests.java | 4 ++-- 10 files changed, 19 insertions(+), 19 deletions(-) diff --git a/spring-ai-client-chat/src/main/java/org/springframework/ai/chat/client/observation/ChatClientPromptContentObservationHandler.java b/spring-ai-client-chat/src/main/java/org/springframework/ai/chat/client/observation/ChatClientPromptContentObservationHandler.java index ddf276b68..a194766bc 100644 --- a/spring-ai-client-chat/src/main/java/org/springframework/ai/chat/client/observation/ChatClientPromptContentObservationHandler.java +++ b/spring-ai-client-chat/src/main/java/org/springframework/ai/chat/client/observation/ChatClientPromptContentObservationHandler.java @@ -40,7 +40,7 @@ public class ChatClientPromptContentObservationHandler implements ObservationHan @Override public void onStop(ChatClientObservationContext context) { - logger.debug("Chat Client Prompt Content:\n{}", ObservabilityHelper.concatenateEntries(processPrompt(context))); + logger.info("Chat Client Prompt Content:\n{}", ObservabilityHelper.concatenateEntries(processPrompt(context))); } private Map processPrompt(ChatClientObservationContext context) { diff --git a/spring-ai-client-chat/src/test/java/org/springframework/ai/chat/client/observation/ChatClientPromptContentObservationHandlerTests.java b/spring-ai-client-chat/src/test/java/org/springframework/ai/chat/client/observation/ChatClientPromptContentObservationHandlerTests.java index b6e24c6cb..aafd76448 100644 --- a/spring-ai-client-chat/src/test/java/org/springframework/ai/chat/client/observation/ChatClientPromptContentObservationHandlerTests.java +++ b/spring-ai-client-chat/src/test/java/org/springframework/ai/chat/client/observation/ChatClientPromptContentObservationHandlerTests.java @@ -63,7 +63,7 @@ class ChatClientPromptContentObservationHandlerTests { .build(); this.observationHandler.onStop(context); assertThat(output).contains(""" - Chat Client Prompt Content: + INFO o.s.a.c.c.o.ChatClientPromptContentObservationHandler -- Chat Client Prompt Content: [] """); } @@ -75,7 +75,7 @@ class ChatClientPromptContentObservationHandlerTests { .build(); this.observationHandler.onStop(context); assertThat(output).contains(""" - Chat Client Prompt Content: + INFO o.s.a.c.c.o.ChatClientPromptContentObservationHandler -- Chat Client Prompt Content: ["user":"supercalifragilisticexpialidocious"] """); } @@ -90,7 +90,7 @@ class ChatClientPromptContentObservationHandlerTests { .build(); this.observationHandler.onStop(context); assertThat(output).contains(""" - Chat Client Prompt Content: + INFO o.s.a.c.c.o.ChatClientPromptContentObservationHandler -- Chat Client Prompt Content: ["system":"you're a chimney sweep", "user":"supercalifragilisticexpialidocious"] """); } diff --git a/spring-ai-model/src/main/java/org/springframework/ai/chat/observation/ChatModelCompletionObservationHandler.java b/spring-ai-model/src/main/java/org/springframework/ai/chat/observation/ChatModelCompletionObservationHandler.java index 597ce0a1f..ef2182f98 100644 --- a/spring-ai-model/src/main/java/org/springframework/ai/chat/observation/ChatModelCompletionObservationHandler.java +++ b/spring-ai-model/src/main/java/org/springframework/ai/chat/observation/ChatModelCompletionObservationHandler.java @@ -40,7 +40,7 @@ public class ChatModelCompletionObservationHandler implements ObservationHandler @Override public void onStop(ChatModelObservationContext context) { - logger.debug("Chat Model Completion:\n{}", ObservabilityHelper.concatenateStrings(completion(context))); + logger.info("Chat Model Completion:\n{}", ObservabilityHelper.concatenateStrings(completion(context))); } private List completion(ChatModelObservationContext context) { diff --git a/spring-ai-model/src/main/java/org/springframework/ai/chat/observation/ChatModelPromptContentObservationHandler.java b/spring-ai-model/src/main/java/org/springframework/ai/chat/observation/ChatModelPromptContentObservationHandler.java index 88b353b68..b7fc31355 100644 --- a/spring-ai-model/src/main/java/org/springframework/ai/chat/observation/ChatModelPromptContentObservationHandler.java +++ b/spring-ai-model/src/main/java/org/springframework/ai/chat/observation/ChatModelPromptContentObservationHandler.java @@ -40,7 +40,7 @@ public class ChatModelPromptContentObservationHandler implements ObservationHand @Override public void onStop(ChatModelObservationContext context) { - logger.debug("Chat Model Prompt Content:\n{}", ObservabilityHelper.concatenateStrings(prompt(context))); + logger.info("Chat Model Prompt Content:\n{}", ObservabilityHelper.concatenateStrings(prompt(context))); } private List prompt(ChatModelObservationContext context) { diff --git a/spring-ai-model/src/main/java/org/springframework/ai/image/observation/ImageModelPromptContentObservationHandler.java b/spring-ai-model/src/main/java/org/springframework/ai/image/observation/ImageModelPromptContentObservationHandler.java index b15d535b3..93a48471f 100644 --- a/spring-ai-model/src/main/java/org/springframework/ai/image/observation/ImageModelPromptContentObservationHandler.java +++ b/spring-ai-model/src/main/java/org/springframework/ai/image/observation/ImageModelPromptContentObservationHandler.java @@ -44,7 +44,7 @@ public class ImageModelPromptContentObservationHandler implements ObservationHan .getInstructions() .forEach(message -> promptMessagesJoiner.add("\"" + message.getText() + "\"")); - logger.debug("Image Model Prompt Content:\n{}", promptMessagesJoiner); + logger.info("Image Model Prompt Content:\n{}", promptMessagesJoiner); } } diff --git a/spring-ai-model/src/test/java/org/springframework/ai/chat/observation/ChatModelCompletionObservationHandlerTests.java b/spring-ai-model/src/test/java/org/springframework/ai/chat/observation/ChatModelCompletionObservationHandlerTests.java index 69f4f9023..e85722103 100644 --- a/spring-ai-model/src/test/java/org/springframework/ai/chat/observation/ChatModelCompletionObservationHandlerTests.java +++ b/spring-ai-model/src/test/java/org/springframework/ai/chat/observation/ChatModelCompletionObservationHandlerTests.java @@ -66,7 +66,7 @@ class ChatModelCompletionObservationHandlerTests { .build(); this.observationHandler.onStop(context); assertThat(output).contains(""" - Chat Model Completion: + INFO o.s.a.c.o.ChatModelCompletionObservationHandler -- Chat Model Completion: [] """); } @@ -80,7 +80,7 @@ class ChatModelCompletionObservationHandlerTests { context.setResponse(new ChatResponse(List.of(new Generation(new AssistantMessage(""))))); this.observationHandler.onStop(context); assertThat(output).contains(""" - Chat Model Completion: + INFO o.s.a.c.o.ChatModelCompletionObservationHandler -- Chat Model Completion: [] """); } @@ -95,7 +95,7 @@ class ChatModelCompletionObservationHandlerTests { new Generation(new AssistantMessage("seriously, say please"))))); this.observationHandler.onStop(context); assertThat(output).contains(""" - Chat Model Completion: + INFO o.s.a.c.o.ChatModelCompletionObservationHandler -- Chat Model Completion: ["say please", "seriously, say please"] """); } diff --git a/spring-ai-model/src/test/java/org/springframework/ai/chat/observation/ChatModelPromptContentObservationHandlerTests.java b/spring-ai-model/src/test/java/org/springframework/ai/chat/observation/ChatModelPromptContentObservationHandlerTests.java index dd885c397..e9f8a0007 100644 --- a/spring-ai-model/src/test/java/org/springframework/ai/chat/observation/ChatModelPromptContentObservationHandlerTests.java +++ b/spring-ai-model/src/test/java/org/springframework/ai/chat/observation/ChatModelPromptContentObservationHandlerTests.java @@ -65,7 +65,7 @@ class ChatModelPromptContentObservationHandlerTests { .build(); this.observationHandler.onStop(context); assertThat(output).contains(""" - Chat Model Prompt Content: + INFO o.s.a.c.o.ChatModelPromptContentObservationHandler -- Chat Model Prompt Content: [] """); } @@ -78,7 +78,7 @@ class ChatModelPromptContentObservationHandlerTests { .build(); this.observationHandler.onStop(context); assertThat(output).contains(""" - Chat Model Prompt Content: + INFO o.s.a.c.o.ChatModelPromptContentObservationHandler -- Chat Model Prompt Content: ["supercalifragilisticexpialidocious"] """); } @@ -94,7 +94,7 @@ class ChatModelPromptContentObservationHandlerTests { .build(); this.observationHandler.onStop(context); assertThat(output).contains(""" - Chat Model Prompt Content: + INFO o.s.a.c.o.ChatModelPromptContentObservationHandler -- Chat Model Prompt Content: ["you're a chimney sweep", "supercalifragilisticexpialidocious"] """); } diff --git a/spring-ai-model/src/test/java/org/springframework/ai/image/observation/ImageModelPromptContentObservationHandlerTests.java b/spring-ai-model/src/test/java/org/springframework/ai/image/observation/ImageModelPromptContentObservationHandlerTests.java index f420f64bf..e41789f99 100644 --- a/spring-ai-model/src/test/java/org/springframework/ai/image/observation/ImageModelPromptContentObservationHandlerTests.java +++ b/spring-ai-model/src/test/java/org/springframework/ai/image/observation/ImageModelPromptContentObservationHandlerTests.java @@ -64,7 +64,7 @@ class ImageModelPromptContentObservationHandlerTests { .build(); this.observationHandler.onStop(context); assertThat(output).contains(""" - Image Model Prompt Content: + INFO o.s.a.i.o.ImageModelPromptContentObservationHandler -- Image Model Prompt Content: [""] """); } @@ -78,7 +78,7 @@ class ImageModelPromptContentObservationHandlerTests { .build(); this.observationHandler.onStop(context); assertThat(output).contains(""" - Image Model Prompt Content: + INFO o.s.a.i.o.ImageModelPromptContentObservationHandler -- Image Model Prompt Content: ["supercalifragilisticexpialidocious"] """); } @@ -94,7 +94,7 @@ class ImageModelPromptContentObservationHandlerTests { .build(); this.observationHandler.onStop(context); assertThat(output).contains(""" - Image Model Prompt Content: + INFO o.s.a.i.o.ImageModelPromptContentObservationHandler -- Image Model Prompt Content: ["you're a chimney sweep", "supercalifragilisticexpialidocious"] """); } diff --git a/spring-ai-vector-store/src/main/java/org/springframework/ai/vectorstore/observation/VectorStoreQueryResponseObservationHandler.java b/spring-ai-vector-store/src/main/java/org/springframework/ai/vectorstore/observation/VectorStoreQueryResponseObservationHandler.java index 650c7c545..09df724ba 100644 --- a/spring-ai-vector-store/src/main/java/org/springframework/ai/vectorstore/observation/VectorStoreQueryResponseObservationHandler.java +++ b/spring-ai-vector-store/src/main/java/org/springframework/ai/vectorstore/observation/VectorStoreQueryResponseObservationHandler.java @@ -40,7 +40,7 @@ public class VectorStoreQueryResponseObservationHandler implements ObservationHa @Override public void onStop(VectorStoreObservationContext context) { - logger.debug("Vector Store Query Response:\n{}", ObservabilityHelper.concatenateStrings(documents(context))); + logger.info("Vector Store Query Response:\n{}", ObservabilityHelper.concatenateStrings(documents(context))); } private List documents(VectorStoreObservationContext context) { diff --git a/spring-ai-vector-store/src/test/java/org/springframework/ai/vectorstore/observation/VectorStoreQueryResponseObservationHandlerTests.java b/spring-ai-vector-store/src/test/java/org/springframework/ai/vectorstore/observation/VectorStoreQueryResponseObservationHandlerTests.java index 149f8d75e..31bc84b53 100644 --- a/spring-ai-vector-store/src/test/java/org/springframework/ai/vectorstore/observation/VectorStoreQueryResponseObservationHandlerTests.java +++ b/spring-ai-vector-store/src/test/java/org/springframework/ai/vectorstore/observation/VectorStoreQueryResponseObservationHandlerTests.java @@ -57,7 +57,7 @@ class VectorStoreQueryResponseObservationHandlerTests { var context = VectorStoreObservationContext.builder("db", VectorStoreObservationContext.Operation.ADD).build(); this.observationHandler.onStop(context); assertThat(output).contains(""" - Vector Store Query Response: + INFO o.s.a.v.o.VectorStoreQueryResponseObservationHandler -- Vector Store Query Response: [] """); } @@ -68,7 +68,7 @@ class VectorStoreQueryResponseObservationHandlerTests { context.setQueryResponse(List.of(new Document("doc1"), new Document("doc2"))); this.observationHandler.onStop(context); assertThat(output).contains(""" - Vector Store Query Response: + INFO o.s.a.v.o.VectorStoreQueryResponseObservationHandler -- Vector Store Query Response: ["doc1", "doc2"] """); }