From 60ec4e6f5c8128cfa66371e2726c734de3f902d2 Mon Sep 17 00:00:00 2001 From: Joe Wang Date: Wed, 12 Mar 2025 10:40:21 -0400 Subject: [PATCH 01/57] feat: add sdk logging helpers --- java-sdk-logging/logback-extension/pom.xml | 38 ++++++++++++ .../api/logging/LoggingMdcJsonProvider.java | 62 +++++++++++++++++++ java-sdk-logging/pom.xml | 21 +++++++ pom.xml | 1 + 4 files changed, 122 insertions(+) create mode 100644 java-sdk-logging/logback-extension/pom.xml create mode 100644 java-sdk-logging/logback-extension/src/main/java/com/google/api/logging/LoggingMdcJsonProvider.java create mode 100644 java-sdk-logging/pom.xml diff --git a/java-sdk-logging/logback-extension/pom.xml b/java-sdk-logging/logback-extension/pom.xml new file mode 100644 index 0000000000..579c8a06d5 --- /dev/null +++ b/java-sdk-logging/logback-extension/pom.xml @@ -0,0 +1,38 @@ + + + 4.0.0 + + com.google.api + java-sdk-logging + 0.0.1-SNAPSHOT + + logback-extension + + + UTF-8 + 1.2.13 + 7.3 + + + + + org.slf4j + slf4j-api + ${slf4j.version} + + + ch.qos.logback + logback-classic + ${logback.version} + true + + + net.logstash.logback + logstash-logback-encoder + ${logstash.encoder.version} + true + + + \ No newline at end of file diff --git a/java-sdk-logging/logback-extension/src/main/java/com/google/api/logging/LoggingMdcJsonProvider.java b/java-sdk-logging/logback-extension/src/main/java/com/google/api/logging/LoggingMdcJsonProvider.java new file mode 100644 index 0000000000..59b084221c --- /dev/null +++ b/java-sdk-logging/logback-extension/src/main/java/com/google/api/logging/LoggingMdcJsonProvider.java @@ -0,0 +1,62 @@ +package com.google.api.logging; + +import ch.qos.logback.classic.spi.ILoggingEvent; +import com.fasterxml.jackson.core.JsonGenerator; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; +import java.io.IOException; +import java.util.Map; +import net.logstash.logback.composite.loggingevent.MdcJsonProvider; + +public class LoggingMdcJsonProvider extends MdcJsonProvider { + private final ObjectMapper objectMapper = new ObjectMapper(); + + @Override + public void writeTo(JsonGenerator generator, ILoggingEvent event) throws IOException { + Map mdcProperties = event.getMDCPropertyMap(); + if (mdcProperties != null && !mdcProperties.isEmpty()) { + + boolean hasWrittenStart = false; + + for (Map.Entry entry : mdcProperties.entrySet()) { + // removed ability to override MDC key names + String fieldName = entry.getKey(); + + if (!hasWrittenStart && getFieldName() != null) { + generator.writeObjectFieldStart(getFieldName()); + hasWrittenStart = true; + } + generator.writeFieldName(fieldName); + String entryValueString = entry.getValue(); + if (isJsonStringJackson(entryValueString)) { + try { + generator.writeTree(convertToTreeNode(entryValueString)); + } catch (Exception e) { + // in case of conversion exception, just use String + generator.writeObject(entryValueString); + } + } else { + generator.writeObject(entryValueString); + } + } + if (hasWrittenStart) { + generator.writeEndObject(); + } + } + } + + public boolean isJsonStringJackson(String s) { + try { + JsonNode jsonNode = objectMapper.readTree(s); + return jsonNode != null; + } catch (JsonProcessingException e) { + return false; + } + } + + private JsonNode convertToTreeNode(String jsonString) throws Exception{ + JsonNode jsonNode = objectMapper.readTree(jsonString); + return jsonNode; + } +} diff --git a/java-sdk-logging/pom.xml b/java-sdk-logging/pom.xml new file mode 100644 index 0000000000..4614866d51 --- /dev/null +++ b/java-sdk-logging/pom.xml @@ -0,0 +1,21 @@ + + + 4.0.0 + com.google.api + java-sdk-logging + 0.0.1-SNAPSHOT + pom + + logback-extension + + + + 1.8 + 1.8 + UTF-8 + 1.7.36 + + + \ No newline at end of file diff --git a/pom.xml b/pom.xml index 6e328677b6..85fd91a3db 100644 --- a/pom.xml +++ b/pom.xml @@ -24,6 +24,7 @@ gapic-generator-java-bom java-shared-dependencies sdk-platform-java-config + java-sdk-logging From 88097e835c15c4aae562b2110abda71790f8a41e Mon Sep 17 00:00:00 2001 From: Joe Wang Date: Wed, 12 Mar 2025 10:59:14 -0400 Subject: [PATCH 02/57] refactor --- .../api/logging/LoggingMdcJsonProvider.java | 62 ------------------- .../logging/SDKLoggingMdcJsonProvider.java | 53 ++++++++++++++++ 2 files changed, 53 insertions(+), 62 deletions(-) delete mode 100644 java-sdk-logging/logback-extension/src/main/java/com/google/api/logging/LoggingMdcJsonProvider.java create mode 100644 java-sdk-logging/logback-extension/src/main/java/com/google/api/logging/SDKLoggingMdcJsonProvider.java diff --git a/java-sdk-logging/logback-extension/src/main/java/com/google/api/logging/LoggingMdcJsonProvider.java b/java-sdk-logging/logback-extension/src/main/java/com/google/api/logging/LoggingMdcJsonProvider.java deleted file mode 100644 index 59b084221c..0000000000 --- a/java-sdk-logging/logback-extension/src/main/java/com/google/api/logging/LoggingMdcJsonProvider.java +++ /dev/null @@ -1,62 +0,0 @@ -package com.google.api.logging; - -import ch.qos.logback.classic.spi.ILoggingEvent; -import com.fasterxml.jackson.core.JsonGenerator; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; -import java.io.IOException; -import java.util.Map; -import net.logstash.logback.composite.loggingevent.MdcJsonProvider; - -public class LoggingMdcJsonProvider extends MdcJsonProvider { - private final ObjectMapper objectMapper = new ObjectMapper(); - - @Override - public void writeTo(JsonGenerator generator, ILoggingEvent event) throws IOException { - Map mdcProperties = event.getMDCPropertyMap(); - if (mdcProperties != null && !mdcProperties.isEmpty()) { - - boolean hasWrittenStart = false; - - for (Map.Entry entry : mdcProperties.entrySet()) { - // removed ability to override MDC key names - String fieldName = entry.getKey(); - - if (!hasWrittenStart && getFieldName() != null) { - generator.writeObjectFieldStart(getFieldName()); - hasWrittenStart = true; - } - generator.writeFieldName(fieldName); - String entryValueString = entry.getValue(); - if (isJsonStringJackson(entryValueString)) { - try { - generator.writeTree(convertToTreeNode(entryValueString)); - } catch (Exception e) { - // in case of conversion exception, just use String - generator.writeObject(entryValueString); - } - } else { - generator.writeObject(entryValueString); - } - } - if (hasWrittenStart) { - generator.writeEndObject(); - } - } - } - - public boolean isJsonStringJackson(String s) { - try { - JsonNode jsonNode = objectMapper.readTree(s); - return jsonNode != null; - } catch (JsonProcessingException e) { - return false; - } - } - - private JsonNode convertToTreeNode(String jsonString) throws Exception{ - JsonNode jsonNode = objectMapper.readTree(jsonString); - return jsonNode; - } -} diff --git a/java-sdk-logging/logback-extension/src/main/java/com/google/api/logging/SDKLoggingMdcJsonProvider.java b/java-sdk-logging/logback-extension/src/main/java/com/google/api/logging/SDKLoggingMdcJsonProvider.java new file mode 100644 index 0000000000..3c9d3f503c --- /dev/null +++ b/java-sdk-logging/logback-extension/src/main/java/com/google/api/logging/SDKLoggingMdcJsonProvider.java @@ -0,0 +1,53 @@ +package com.google.api.logging; + +import ch.qos.logback.classic.spi.ILoggingEvent; +import com.fasterxml.jackson.core.JsonGenerator; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; +import java.io.IOException; +import java.util.Map; +import net.logstash.logback.composite.loggingevent.MdcJsonProvider; + +public class SDKLoggingMdcJsonProvider extends MdcJsonProvider { + + private final ObjectMapper objectMapper = new ObjectMapper(); + + @Override + public void writeTo(JsonGenerator generator, ILoggingEvent event) throws IOException { + Map mdcProperties = event.getMDCPropertyMap(); + if (mdcProperties == null || mdcProperties.isEmpty()) { + return; + } + + boolean hasWrittenStart = false; + for (Map.Entry entry : mdcProperties.entrySet()) { + String fieldName = entry.getKey(); + + if (!hasWrittenStart && getFieldName() != null) { + generator.writeObjectFieldStart(getFieldName()); + hasWrittenStart = true; + } + generator.writeFieldName(fieldName); + String entryValueString = entry.getValue(); + try { + JsonNode jsonNode = convertToTreeNode(entryValueString); + if (jsonNode != null) { + generator.writeTree(jsonNode); + } else { + generator.writeObject(entryValueString); + } + } catch (JsonProcessingException e) { + // in case of conversion exception, just use String + generator.writeObject(entryValueString); + } + } + if (hasWrittenStart) { + generator.writeEndObject(); + } + } + + private JsonNode convertToTreeNode(String jsonString) throws JsonProcessingException { + return objectMapper.readTree(jsonString); + } +} From bd30ffa354565a7299a18bcc9e7b4e963bb98908 Mon Sep 17 00:00:00 2001 From: Joe Wang Date: Wed, 12 Mar 2025 12:19:09 -0400 Subject: [PATCH 03/57] add test deps --- java-sdk-logging/logback-extension/pom.xml | 10 ++++++ .../SDKLoggingMdcJsonProviderTest.java | 31 +++++++++++++++++++ java-sdk-logging/pom.xml | 21 +++++++++++++ 3 files changed, 62 insertions(+) create mode 100644 java-sdk-logging/logback-extension/src/test/java/com/google/api/logging/SDKLoggingMdcJsonProviderTest.java diff --git a/java-sdk-logging/logback-extension/pom.xml b/java-sdk-logging/logback-extension/pom.xml index 579c8a06d5..a792118643 100644 --- a/java-sdk-logging/logback-extension/pom.xml +++ b/java-sdk-logging/logback-extension/pom.xml @@ -34,5 +34,15 @@ ${logstash.encoder.version} true + + org.junit.jupiter + junit-jupiter-api + test + + + org.mockito + mockito-core + test + \ No newline at end of file diff --git a/java-sdk-logging/logback-extension/src/test/java/com/google/api/logging/SDKLoggingMdcJsonProviderTest.java b/java-sdk-logging/logback-extension/src/test/java/com/google/api/logging/SDKLoggingMdcJsonProviderTest.java new file mode 100644 index 0000000000..bcee8d4b5e --- /dev/null +++ b/java-sdk-logging/logback-extension/src/test/java/com/google/api/logging/SDKLoggingMdcJsonProviderTest.java @@ -0,0 +1,31 @@ +package com.google.api.logging; + +import static org.mockito.Mockito.when; + +import ch.qos.logback.classic.spi.ILoggingEvent; +import com.fasterxml.jackson.core.JsonGenerator; +import java.util.LinkedHashMap; +import java.util.Map; +import org.junit.jupiter.api.BeforeEach; +import org.mockito.Mock; + +public class SDKLoggingMdcJsonProviderTest { + private SDKLoggingMdcJsonProvider provider = new SDKLoggingMdcJsonProvider(); + + @Mock + private JsonGenerator generator; + + @Mock + private ILoggingEvent event; + + private Map mdc; + + @BeforeEach + public void setup() { + mdc = new LinkedHashMap<>(); + mdc.put("name1", "value1"); + mdc.put("name2", "value2"); + mdc.put("name3", "value3"); + when(event.getMDCPropertyMap()).thenReturn(mdc); + } +} diff --git a/java-sdk-logging/pom.xml b/java-sdk-logging/pom.xml index 4614866d51..e0b76d51dd 100644 --- a/java-sdk-logging/pom.xml +++ b/java-sdk-logging/pom.xml @@ -16,6 +16,27 @@ 1.8 UTF-8 1.7.36 + 5.12.0 + 4.11.0 + + + + org.junit + junit-bom + ${junit.version} + import + pom + + + org.mockito + mockito-bom + ${mockito.version} + import + pom + + + + \ No newline at end of file From b32e11b193f1dea2ffeda7b5e7ad8d81c0428d8a Mon Sep 17 00:00:00 2001 From: Joe Wang Date: Wed, 12 Mar 2025 13:54:34 -0400 Subject: [PATCH 04/57] add test --- .../SDKLoggingMdcJsonProviderTest.java | 36 +++++++++++++------ 1 file changed, 26 insertions(+), 10 deletions(-) diff --git a/java-sdk-logging/logback-extension/src/test/java/com/google/api/logging/SDKLoggingMdcJsonProviderTest.java b/java-sdk-logging/logback-extension/src/test/java/com/google/api/logging/SDKLoggingMdcJsonProviderTest.java index bcee8d4b5e..11b1a8f293 100644 --- a/java-sdk-logging/logback-extension/src/test/java/com/google/api/logging/SDKLoggingMdcJsonProviderTest.java +++ b/java-sdk-logging/logback-extension/src/test/java/com/google/api/logging/SDKLoggingMdcJsonProviderTest.java @@ -1,31 +1,47 @@ package com.google.api.logging; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import ch.qos.logback.classic.spi.ILoggingEvent; import com.fasterxml.jackson.core.JsonGenerator; -import java.util.LinkedHashMap; +import java.io.IOException; +import java.util.HashMap; import java.util.Map; import org.junit.jupiter.api.BeforeEach; -import org.mockito.Mock; +import org.junit.jupiter.api.Test; public class SDKLoggingMdcJsonProviderTest { private SDKLoggingMdcJsonProvider provider = new SDKLoggingMdcJsonProvider(); - @Mock - private JsonGenerator generator; + private JsonGenerator generator = mock(JsonGenerator.class); - @Mock - private ILoggingEvent event; + private ILoggingEvent event = mock(ILoggingEvent.class); private Map mdc; @BeforeEach public void setup() { - mdc = new LinkedHashMap<>(); - mdc.put("name1", "value1"); - mdc.put("name2", "value2"); - mdc.put("name3", "value3"); + mdc = new HashMap<>(); + mdc.put("json1", "{\n" + + " \"@version\": \"1\",\n" + + " \"textPayload\": \"Received response\",\n" + + " \"response.payload\": {\n" + + " \"name\": \"example\",\n" + + " \"state\": \"ACTIVE\"\n" + + " }\n" + + "}"); when(event.getMDCPropertyMap()).thenReturn(mdc); } + + @Test + void testUnwrapped() throws IOException { + + provider.writeTo(generator, event); + + verify(generator).writeFieldName("json1"); + verify(generator).writeTree(any()); + } } From 4181927a17ce935fca5ba5aa68af2247a51e97a4 Mon Sep 17 00:00:00 2001 From: Joe Wang Date: Wed, 12 Mar 2025 16:13:21 -0400 Subject: [PATCH 05/57] add formatter --- .../SDKLoggingMdcJsonProviderTest.java | 22 +++++-------------- java-sdk-logging/pom.xml | 22 +++++++++++++++++++ 2 files changed, 28 insertions(+), 16 deletions(-) diff --git a/java-sdk-logging/logback-extension/src/test/java/com/google/api/logging/SDKLoggingMdcJsonProviderTest.java b/java-sdk-logging/logback-extension/src/test/java/com/google/api/logging/SDKLoggingMdcJsonProviderTest.java index 11b1a8f293..445084a573 100644 --- a/java-sdk-logging/logback-extension/src/test/java/com/google/api/logging/SDKLoggingMdcJsonProviderTest.java +++ b/java-sdk-logging/logback-extension/src/test/java/com/google/api/logging/SDKLoggingMdcJsonProviderTest.java @@ -10,21 +10,16 @@ import java.io.IOException; import java.util.HashMap; import java.util.Map; -import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; public class SDKLoggingMdcJsonProviderTest { - private SDKLoggingMdcJsonProvider provider = new SDKLoggingMdcJsonProvider(); - private JsonGenerator generator = mock(JsonGenerator.class); - - private ILoggingEvent event = mock(ILoggingEvent.class); - - private Map mdc; - - @BeforeEach - public void setup() { - mdc = new HashMap<>(); + @Test + void testWriteJsonFormat() throws IOException { + SDKLoggingMdcJsonProvider provider = new SDKLoggingMdcJsonProvider(); + JsonGenerator generator = mock(JsonGenerator.class); + ILoggingEvent event = mock(ILoggingEvent.class); + Map mdc = new HashMap<>(); mdc.put("json1", "{\n" + " \"@version\": \"1\",\n" + " \"textPayload\": \"Received response\",\n" @@ -34,13 +29,8 @@ public void setup() { + " }\n" + "}"); when(event.getMDCPropertyMap()).thenReturn(mdc); - } - - @Test - void testUnwrapped() throws IOException { provider.writeTo(generator, event); - verify(generator).writeFieldName("json1"); verify(generator).writeTree(any()); } diff --git a/java-sdk-logging/pom.xml b/java-sdk-logging/pom.xml index e0b76d51dd..f4a2b78255 100644 --- a/java-sdk-logging/pom.xml +++ b/java-sdk-logging/pom.xml @@ -18,6 +18,7 @@ 1.7.36 5.12.0 4.11.0 + 1.7 @@ -39,4 +40,25 @@ + + + + com.coveo + fmt-maven-plugin + 2.9 + + + true + + + + com.google.googlejavaformat + google-java-format + ${google-java-format.version} + + + + + + \ No newline at end of file From 209768babf14439d5f6102be0883ea406b86493f Mon Sep 17 00:00:00 2001 From: Joe Wang Date: Wed, 12 Mar 2025 16:40:27 -0400 Subject: [PATCH 06/57] format --- .../logging/SDKLoggingMdcJsonProviderTest.java | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/java-sdk-logging/logback-extension/src/test/java/com/google/api/logging/SDKLoggingMdcJsonProviderTest.java b/java-sdk-logging/logback-extension/src/test/java/com/google/api/logging/SDKLoggingMdcJsonProviderTest.java index 445084a573..ec5b31b67f 100644 --- a/java-sdk-logging/logback-extension/src/test/java/com/google/api/logging/SDKLoggingMdcJsonProviderTest.java +++ b/java-sdk-logging/logback-extension/src/test/java/com/google/api/logging/SDKLoggingMdcJsonProviderTest.java @@ -20,14 +20,16 @@ void testWriteJsonFormat() throws IOException { JsonGenerator generator = mock(JsonGenerator.class); ILoggingEvent event = mock(ILoggingEvent.class); Map mdc = new HashMap<>(); - mdc.put("json1", "{\n" - + " \"@version\": \"1\",\n" - + " \"textPayload\": \"Received response\",\n" - + " \"response.payload\": {\n" - + " \"name\": \"example\",\n" - + " \"state\": \"ACTIVE\"\n" - + " }\n" - + "}"); + mdc.put( + "json1", + "{\n" + + " \"@version\": \"1\",\n" + + " \"textPayload\": \"Received response\",\n" + + " \"response.payload\": {\n" + + " \"name\": \"example\",\n" + + " \"state\": \"ACTIVE\"\n" + + " }\n" + + "}"); when(event.getMDCPropertyMap()).thenReturn(mdc); provider.writeTo(generator, event); From b0310a4460498c7b9894d4f846c7a995cf6f5167 Mon Sep 17 00:00:00 2001 From: Joe Wang Date: Wed, 12 Mar 2025 17:08:34 -0400 Subject: [PATCH 07/57] change version def --- java-sdk-logging/logback-extension/pom.xml | 1 + java-sdk-logging/pom.xml | 1 - 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/java-sdk-logging/logback-extension/pom.xml b/java-sdk-logging/logback-extension/pom.xml index a792118643..abd880fa5e 100644 --- a/java-sdk-logging/logback-extension/pom.xml +++ b/java-sdk-logging/logback-extension/pom.xml @@ -12,6 +12,7 @@ UTF-8 + 1.7.36 1.2.13 7.3 diff --git a/java-sdk-logging/pom.xml b/java-sdk-logging/pom.xml index f4a2b78255..98062f28c3 100644 --- a/java-sdk-logging/pom.xml +++ b/java-sdk-logging/pom.xml @@ -15,7 +15,6 @@ 1.8 1.8 UTF-8 - 1.7.36 5.12.0 4.11.0 1.7 From 64acdfb52bd968fb3ca74d61c6147461153cf9eb Mon Sep 17 00:00:00 2001 From: Joe Wang Date: Wed, 12 Mar 2025 17:08:45 -0400 Subject: [PATCH 08/57] update test --- .../com/google/api/logging/SDKLoggingMdcJsonProviderTest.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/java-sdk-logging/logback-extension/src/test/java/com/google/api/logging/SDKLoggingMdcJsonProviderTest.java b/java-sdk-logging/logback-extension/src/test/java/com/google/api/logging/SDKLoggingMdcJsonProviderTest.java index ec5b31b67f..b182e7c002 100644 --- a/java-sdk-logging/logback-extension/src/test/java/com/google/api/logging/SDKLoggingMdcJsonProviderTest.java +++ b/java-sdk-logging/logback-extension/src/test/java/com/google/api/logging/SDKLoggingMdcJsonProviderTest.java @@ -7,6 +7,7 @@ import ch.qos.logback.classic.spi.ILoggingEvent; import com.fasterxml.jackson.core.JsonGenerator; +import com.fasterxml.jackson.databind.JsonNode; import java.io.IOException; import java.util.HashMap; import java.util.Map; @@ -34,6 +35,6 @@ void testWriteJsonFormat() throws IOException { provider.writeTo(generator, event); verify(generator).writeFieldName("json1"); - verify(generator).writeTree(any()); + verify(generator).writeTree(any(JsonNode.class)); } } From 82ff79d8815e93988502c317eebe4ed61652e140 Mon Sep 17 00:00:00 2001 From: Joe Wang Date: Wed, 12 Mar 2025 17:11:32 -0400 Subject: [PATCH 09/57] add profile --- java-sdk-logging/pom.xml | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/java-sdk-logging/pom.xml b/java-sdk-logging/pom.xml index 98062f28c3..6af200cb8c 100644 --- a/java-sdk-logging/pom.xml +++ b/java-sdk-logging/pom.xml @@ -60,4 +60,16 @@ + + + compiler-release-8 + + [9,] + + + 8 + + + + \ No newline at end of file From e0f898101263c1e598e839f27ccd736203c0da91 Mon Sep 17 00:00:00 2001 From: Joe Wang Date: Wed, 12 Mar 2025 18:30:01 -0400 Subject: [PATCH 10/57] skip normal release --- java-sdk-logging/logback-extension/pom.xml | 12 ++++++++++++ java-sdk-logging/pom.xml | 16 ++++++++++++++++ 2 files changed, 28 insertions(+) diff --git a/java-sdk-logging/logback-extension/pom.xml b/java-sdk-logging/logback-extension/pom.xml index abd880fa5e..3a69b746b2 100644 --- a/java-sdk-logging/logback-extension/pom.xml +++ b/java-sdk-logging/logback-extension/pom.xml @@ -46,4 +46,16 @@ test + + + + + org.apache.maven.plugins + maven-deploy-plugin + + true + + + + \ No newline at end of file diff --git a/java-sdk-logging/pom.xml b/java-sdk-logging/pom.xml index 6af200cb8c..2b32f9b4f4 100644 --- a/java-sdk-logging/pom.xml +++ b/java-sdk-logging/pom.xml @@ -40,6 +40,15 @@ + + + + org.apache.maven.plugins + maven-deploy-plugin + 3.1.3 + + + com.coveo @@ -57,6 +66,13 @@ + + org.apache.maven.plugins + maven-deploy-plugin + + true + + From 204fb8fac644d35095d516db49355627d5f5a259 Mon Sep 17 00:00:00 2001 From: Joe Wang Date: Wed, 12 Mar 2025 19:03:12 -0400 Subject: [PATCH 11/57] add test --- .../SDKLoggingMdcJsonProviderTest.java | 43 ++++++++++++++++--- 1 file changed, 37 insertions(+), 6 deletions(-) diff --git a/java-sdk-logging/logback-extension/src/test/java/com/google/api/logging/SDKLoggingMdcJsonProviderTest.java b/java-sdk-logging/logback-extension/src/test/java/com/google/api/logging/SDKLoggingMdcJsonProviderTest.java index b182e7c002..8e2b04b680 100644 --- a/java-sdk-logging/logback-extension/src/test/java/com/google/api/logging/SDKLoggingMdcJsonProviderTest.java +++ b/java-sdk-logging/logback-extension/src/test/java/com/google/api/logging/SDKLoggingMdcJsonProviderTest.java @@ -1,8 +1,12 @@ package com.google.api.logging; import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.anyString; import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.never; +import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.verifyNoInteractions; import static org.mockito.Mockito.when; import ch.qos.logback.classic.spi.ILoggingEvent; @@ -11,16 +15,24 @@ import java.io.IOException; import java.util.HashMap; import java.util.Map; +import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; public class SDKLoggingMdcJsonProviderTest { + private SDKLoggingMdcJsonProvider provider = new SDKLoggingMdcJsonProvider(); + private JsonGenerator generator = mock(JsonGenerator.class); + private ILoggingEvent event = mock(ILoggingEvent.class); + private Map mdc; + + @BeforeEach + void init() { + mdc = new HashMap<>(); + when(event.getMDCPropertyMap()).thenReturn(mdc); + } + @Test - void testWriteJsonFormat() throws IOException { - SDKLoggingMdcJsonProvider provider = new SDKLoggingMdcJsonProvider(); - JsonGenerator generator = mock(JsonGenerator.class); - ILoggingEvent event = mock(ILoggingEvent.class); - Map mdc = new HashMap<>(); + void testWriteJsonStringToJsonTree() throws IOException { mdc.put( "json1", "{\n" @@ -31,10 +43,29 @@ void testWriteJsonFormat() throws IOException { + " \"state\": \"ACTIVE\"\n" + " }\n" + "}"); - when(event.getMDCPropertyMap()).thenReturn(mdc); provider.writeTo(generator, event); verify(generator).writeFieldName("json1"); verify(generator).writeTree(any(JsonNode.class)); } + + @Test + void testWriteIllegalJsonFormatToString() throws IOException { + mdc.put( + "json1", + "{\n" + + " \"@version\": \"1\",\n" + + " \"textPayload\": \"Received response\",\n" + + " \"response.payload\": {\n" + + " \"name\": \"example\",\n" + + " \"state\": \"ACTIVE\",\n" // the last semicolon is redundant. + + " }\n" + + "}"); + + + provider.writeTo(generator, event); + verify(generator).writeFieldName("json1"); + verify(generator, never()).writeTree(any(JsonNode.class)); + verify(generator).writeObject(anyString()); + } } From 925f04ccdb727c87df731c1c90e433cca2575ef8 Mon Sep 17 00:00:00 2001 From: Joe Wang Date: Wed, 12 Mar 2025 19:05:10 -0400 Subject: [PATCH 12/57] update test --- .../google/api/logging/SDKLoggingMdcJsonProviderTest.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/java-sdk-logging/logback-extension/src/test/java/com/google/api/logging/SDKLoggingMdcJsonProviderTest.java b/java-sdk-logging/logback-extension/src/test/java/com/google/api/logging/SDKLoggingMdcJsonProviderTest.java index 8e2b04b680..b89569d438 100644 --- a/java-sdk-logging/logback-extension/src/test/java/com/google/api/logging/SDKLoggingMdcJsonProviderTest.java +++ b/java-sdk-logging/logback-extension/src/test/java/com/google/api/logging/SDKLoggingMdcJsonProviderTest.java @@ -32,7 +32,7 @@ void init() { } @Test - void testWriteJsonStringToJsonTree() throws IOException { + void testWriteValidJsonStringToJsonTree() throws IOException { mdc.put( "json1", "{\n" @@ -50,7 +50,7 @@ void testWriteJsonStringToJsonTree() throws IOException { } @Test - void testWriteIllegalJsonFormatToString() throws IOException { + void testWriteInvalidJsonStringToString() throws IOException { mdc.put( "json1", "{\n" @@ -65,7 +65,8 @@ void testWriteIllegalJsonFormatToString() throws IOException { provider.writeTo(generator, event); verify(generator).writeFieldName("json1"); - verify(generator, never()).writeTree(any(JsonNode.class)); verify(generator).writeObject(anyString()); + // should not write tree node because the json string is invalid. + verify(generator, never()).writeTree(any(JsonNode.class)); } } From 469c348af0035003895de23336e0cd1a5c59a231 Mon Sep 17 00:00:00 2001 From: Joe Wang Date: Wed, 12 Mar 2025 19:05:28 -0400 Subject: [PATCH 13/57] update test --- .../com/google/api/logging/SDKLoggingMdcJsonProviderTest.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/java-sdk-logging/logback-extension/src/test/java/com/google/api/logging/SDKLoggingMdcJsonProviderTest.java b/java-sdk-logging/logback-extension/src/test/java/com/google/api/logging/SDKLoggingMdcJsonProviderTest.java index b89569d438..44efe8f305 100644 --- a/java-sdk-logging/logback-extension/src/test/java/com/google/api/logging/SDKLoggingMdcJsonProviderTest.java +++ b/java-sdk-logging/logback-extension/src/test/java/com/google/api/logging/SDKLoggingMdcJsonProviderTest.java @@ -4,9 +4,7 @@ import static org.mockito.ArgumentMatchers.anyString; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.never; -import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.verifyNoInteractions; import static org.mockito.Mockito.when; import ch.qos.logback.classic.spi.ILoggingEvent; From 25a6cb3689921274165a9c231e84c22e84e1f882 Mon Sep 17 00:00:00 2001 From: Joe Wang Date: Wed, 12 Mar 2025 19:07:31 -0400 Subject: [PATCH 14/57] format --- .../com/google/api/logging/SDKLoggingMdcJsonProviderTest.java | 1 - 1 file changed, 1 deletion(-) diff --git a/java-sdk-logging/logback-extension/src/test/java/com/google/api/logging/SDKLoggingMdcJsonProviderTest.java b/java-sdk-logging/logback-extension/src/test/java/com/google/api/logging/SDKLoggingMdcJsonProviderTest.java index 44efe8f305..e8c25429e7 100644 --- a/java-sdk-logging/logback-extension/src/test/java/com/google/api/logging/SDKLoggingMdcJsonProviderTest.java +++ b/java-sdk-logging/logback-extension/src/test/java/com/google/api/logging/SDKLoggingMdcJsonProviderTest.java @@ -60,7 +60,6 @@ void testWriteInvalidJsonStringToString() throws IOException { + " }\n" + "}"); - provider.writeTo(generator, event); verify(generator).writeFieldName("json1"); verify(generator).writeObject(anyString()); From d1698a1c5867bd5b01720f9384aaa7fe9ca2845d Mon Sep 17 00:00:00 2001 From: Joe Wang Date: Wed, 12 Mar 2025 20:51:43 -0400 Subject: [PATCH 15/57] add test --- .../com/google/api/logging/SDKLoggingMdcJsonProvider.java | 7 +------ .../google/api/logging/SDKLoggingMdcJsonProviderTest.java | 8 ++++++++ 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/java-sdk-logging/logback-extension/src/main/java/com/google/api/logging/SDKLoggingMdcJsonProvider.java b/java-sdk-logging/logback-extension/src/main/java/com/google/api/logging/SDKLoggingMdcJsonProvider.java index 3c9d3f503c..c61ceae3b5 100644 --- a/java-sdk-logging/logback-extension/src/main/java/com/google/api/logging/SDKLoggingMdcJsonProvider.java +++ b/java-sdk-logging/logback-extension/src/main/java/com/google/api/logging/SDKLoggingMdcJsonProvider.java @@ -31,12 +31,7 @@ public void writeTo(JsonGenerator generator, ILoggingEvent event) throws IOExcep generator.writeFieldName(fieldName); String entryValueString = entry.getValue(); try { - JsonNode jsonNode = convertToTreeNode(entryValueString); - if (jsonNode != null) { - generator.writeTree(jsonNode); - } else { - generator.writeObject(entryValueString); - } + generator.writeTree(convertToTreeNode(entryValueString)); } catch (JsonProcessingException e) { // in case of conversion exception, just use String generator.writeObject(entryValueString); diff --git a/java-sdk-logging/logback-extension/src/test/java/com/google/api/logging/SDKLoggingMdcJsonProviderTest.java b/java-sdk-logging/logback-extension/src/test/java/com/google/api/logging/SDKLoggingMdcJsonProviderTest.java index e8c25429e7..7b7780f034 100644 --- a/java-sdk-logging/logback-extension/src/test/java/com/google/api/logging/SDKLoggingMdcJsonProviderTest.java +++ b/java-sdk-logging/logback-extension/src/test/java/com/google/api/logging/SDKLoggingMdcJsonProviderTest.java @@ -1,5 +1,6 @@ package com.google.api.logging; +import static org.junit.jupiter.api.Assertions.assertThrows; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyString; import static org.mockito.Mockito.mock; @@ -66,4 +67,11 @@ void testWriteInvalidJsonStringToString() throws IOException { // should not write tree node because the json string is invalid. verify(generator, never()).writeTree(any(JsonNode.class)); } + + @Test + void testWriteNullThrowsException() { + mdc.put("json1", null); + + assertThrows(IllegalArgumentException.class, () -> provider.writeTo(generator, event)); + } } From b4effd9ef174b74639c191e5441ca6dae279b297 Mon Sep 17 00:00:00 2001 From: Joe Wang Date: Thu, 13 Mar 2025 11:59:15 -0400 Subject: [PATCH 16/57] remove slf4j deps --- java-sdk-logging/logback-extension/pom.xml | 6 ------ 1 file changed, 6 deletions(-) diff --git a/java-sdk-logging/logback-extension/pom.xml b/java-sdk-logging/logback-extension/pom.xml index 3a69b746b2..698b62a5c6 100644 --- a/java-sdk-logging/logback-extension/pom.xml +++ b/java-sdk-logging/logback-extension/pom.xml @@ -12,17 +12,11 @@ UTF-8 - 1.7.36 1.2.13 7.3 - - org.slf4j - slf4j-api - ${slf4j.version} - ch.qos.logback logback-classic From fb42331960649fff8d85025e5040680a6ac07638 Mon Sep 17 00:00:00 2001 From: Joe Wang Date: Thu, 13 Mar 2025 14:23:54 -0400 Subject: [PATCH 17/57] add parent --- java-sdk-logging/java.header | 29 +++++++++ .../logging/SDKLoggingMdcJsonProvider.java | 30 ++++++++++ .../SDKLoggingMdcJsonProviderTest.java | 30 ++++++++++ java-sdk-logging/pom.xml | 59 ++----------------- 4 files changed, 95 insertions(+), 53 deletions(-) create mode 100644 java-sdk-logging/java.header diff --git a/java-sdk-logging/java.header b/java-sdk-logging/java.header new file mode 100644 index 0000000000..0ae9545dbb --- /dev/null +++ b/java-sdk-logging/java.header @@ -0,0 +1,29 @@ +^/\*$ +^ \* Copyright 20\d\d Google LLC$ +^ \*$ +^ \* Redistribution and use in source and binary forms, with or without$ +^ \* modification, are permitted provided that the following conditions are$ +^ \* met:$ +^ \*$ +^ \* \* Redistributions of source code must retain the above copyright$ +^ \* notice, this list of conditions and the following disclaimer.$ +^ \* \* Redistributions in binary form must reproduce the above$ +^ \* copyright notice, this list of conditions and the following disclaimer$ +^ \* in the documentation and/or other materials provided with the$ +^ \* distribution.$ +^ \* \* Neither the name of Google LLC nor the names of its$ +^ \* contributors may be used to endorse or promote products derived from$ +^ \* this software without specific prior written permission.$ +^ \*$ +^ \* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS$ +^ \* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT$ +^ \* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR$ +^ \* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT$ +^ \* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,$ +^ \* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES \(INCLUDING, BUT NOT$ +^ \* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,$ +^ \* DATA, OR PROFITS; OR BUSINESS INTERRUPTION\) HOWEVER CAUSED AND ON ANY$ +^ \* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT$ +^ \* \(INCLUDING NEGLIGENCE OR OTHERWISE\) ARISING IN ANY WAY OUT OF THE USE$ +^ \* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.$ +^ \*/$ \ No newline at end of file diff --git a/java-sdk-logging/logback-extension/src/main/java/com/google/api/logging/SDKLoggingMdcJsonProvider.java b/java-sdk-logging/logback-extension/src/main/java/com/google/api/logging/SDKLoggingMdcJsonProvider.java index c61ceae3b5..20e8afa908 100644 --- a/java-sdk-logging/logback-extension/src/main/java/com/google/api/logging/SDKLoggingMdcJsonProvider.java +++ b/java-sdk-logging/logback-extension/src/main/java/com/google/api/logging/SDKLoggingMdcJsonProvider.java @@ -1,3 +1,33 @@ +/* + * Copyright 2025 Google LLC + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following disclaimer + * in the documentation and/or other materials provided with the + * distribution. + * * Neither the name of Google LLC nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + package com.google.api.logging; import ch.qos.logback.classic.spi.ILoggingEvent; diff --git a/java-sdk-logging/logback-extension/src/test/java/com/google/api/logging/SDKLoggingMdcJsonProviderTest.java b/java-sdk-logging/logback-extension/src/test/java/com/google/api/logging/SDKLoggingMdcJsonProviderTest.java index 7b7780f034..0ea589e7a3 100644 --- a/java-sdk-logging/logback-extension/src/test/java/com/google/api/logging/SDKLoggingMdcJsonProviderTest.java +++ b/java-sdk-logging/logback-extension/src/test/java/com/google/api/logging/SDKLoggingMdcJsonProviderTest.java @@ -1,3 +1,33 @@ +/* + * Copyright 2025 Google LLC + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following disclaimer + * in the documentation and/or other materials provided with the + * distribution. + * * Neither the name of Google LLC nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + package com.google.api.logging; import static org.junit.jupiter.api.Assertions.assertThrows; diff --git a/java-sdk-logging/pom.xml b/java-sdk-logging/pom.xml index 2b32f9b4f4..457adb228c 100644 --- a/java-sdk-logging/pom.xml +++ b/java-sdk-logging/pom.xml @@ -3,10 +3,15 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 - com.google.api java-sdk-logging 0.0.1-SNAPSHOT pom + + com.google.api + gapic-generator-java-pom-parent + 2.55.1 + ../gapic-generator-java-pom-parent + logback-extension @@ -15,9 +20,7 @@ 1.8 1.8 UTF-8 - 5.12.0 4.11.0 - 1.7 @@ -38,54 +41,4 @@ - - - - - - org.apache.maven.plugins - maven-deploy-plugin - 3.1.3 - - - - - - com.coveo - fmt-maven-plugin - 2.9 - - - true - - - - com.google.googlejavaformat - google-java-format - ${google-java-format.version} - - - - - org.apache.maven.plugins - maven-deploy-plugin - - true - - - - - - - - compiler-release-8 - - [9,] - - - 8 - - - - \ No newline at end of file From d0712cca506b288b3605577370a836b9ca7f1971 Mon Sep 17 00:00:00 2001 From: Joe Wang Date: Thu, 13 Mar 2025 14:24:46 -0400 Subject: [PATCH 18/57] update pom --- java-sdk-logging/pom.xml | 3 --- 1 file changed, 3 deletions(-) diff --git a/java-sdk-logging/pom.xml b/java-sdk-logging/pom.xml index 457adb228c..e9271c31f4 100644 --- a/java-sdk-logging/pom.xml +++ b/java-sdk-logging/pom.xml @@ -17,9 +17,6 @@ - 1.8 - 1.8 - UTF-8 4.11.0 From e8eda21f5b337e7ebe0b5b8d61e928914cf1fe75 Mon Sep 17 00:00:00 2001 From: Joe Wang Date: Thu, 13 Mar 2025 16:21:42 -0400 Subject: [PATCH 19/57] add skip release in parent pom --- java-sdk-logging/pom.xml | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/java-sdk-logging/pom.xml b/java-sdk-logging/pom.xml index e9271c31f4..d5a4e234bc 100644 --- a/java-sdk-logging/pom.xml +++ b/java-sdk-logging/pom.xml @@ -38,4 +38,16 @@ + + + + + org.apache.maven.plugins + maven-deploy-plugin + + true + + + + \ No newline at end of file From 0bc9c94eae79febcdfe90d6e8e3169a8ecfdaa9c Mon Sep 17 00:00:00 2001 From: Joe Wang Date: Fri, 14 Mar 2025 14:41:07 -0400 Subject: [PATCH 20/57] add a bom --- java-sdk-logging/java-sdk-logging-bom/pom.xml | 29 +++++++++++++++++++ java-sdk-logging/logback-extension/pom.xml | 6 ++-- java-sdk-logging/pom.xml | 5 ++-- 3 files changed, 36 insertions(+), 4 deletions(-) create mode 100644 java-sdk-logging/java-sdk-logging-bom/pom.xml diff --git a/java-sdk-logging/java-sdk-logging-bom/pom.xml b/java-sdk-logging/java-sdk-logging-bom/pom.xml new file mode 100644 index 0000000000..a674778af2 --- /dev/null +++ b/java-sdk-logging/java-sdk-logging-bom/pom.xml @@ -0,0 +1,29 @@ + + + 4.0.0 + + com.google.api + java-sdk-logging-parent + 0.1.0-SNAPSHOT + ../pom.xml + + pom + + java-sdk-logging-bom + + + UTF-8 + + + + + + com.google.api + logback-extension + 0.1.0-SNAPSHOT + + + + \ No newline at end of file diff --git a/java-sdk-logging/logback-extension/pom.xml b/java-sdk-logging/logback-extension/pom.xml index 698b62a5c6..6d3eed5baf 100644 --- a/java-sdk-logging/logback-extension/pom.xml +++ b/java-sdk-logging/logback-extension/pom.xml @@ -5,10 +5,12 @@ 4.0.0 com.google.api - java-sdk-logging - 0.0.1-SNAPSHOT + java-sdk-logging-parent + 0.1.0-SNAPSHOT + ../pom.xml logback-extension + 0.1.0-SNAPSHOT UTF-8 diff --git a/java-sdk-logging/pom.xml b/java-sdk-logging/pom.xml index d5a4e234bc..c71488bbae 100644 --- a/java-sdk-logging/pom.xml +++ b/java-sdk-logging/pom.xml @@ -3,8 +3,8 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 - java-sdk-logging - 0.0.1-SNAPSHOT + java-sdk-logging-parent + 0.1.0-SNAPSHOT pom com.google.api @@ -14,6 +14,7 @@ logback-extension + java-sdk-logging-bom From 710705b9eea7d826ebcde22fe9db2b4bb82f0aff Mon Sep 17 00:00:00 2001 From: Joe Wang Date: Fri, 14 Mar 2025 14:55:01 -0400 Subject: [PATCH 21/57] add a empty class for test prep --- java-sdk-logging/java-sdk-logging-bom/pom.xml | 1 + java-showcase/gapic-showcase/pom.xml | 5 +++++ .../v1beta1/it/logging/TestMdcAppender.java | 15 +++++++++++++++ 3 files changed, 21 insertions(+) create mode 100644 java-showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/it/logging/TestMdcAppender.java diff --git a/java-sdk-logging/java-sdk-logging-bom/pom.xml b/java-sdk-logging/java-sdk-logging-bom/pom.xml index a674778af2..bb84ab760e 100644 --- a/java-sdk-logging/java-sdk-logging-bom/pom.xml +++ b/java-sdk-logging/java-sdk-logging-bom/pom.xml @@ -12,6 +12,7 @@ pom java-sdk-logging-bom + 0.1.0-SNAPSHOT UTF-8 diff --git a/java-showcase/gapic-showcase/pom.xml b/java-showcase/gapic-showcase/pom.xml index 36d1ab34f9..de6dbb013b 100644 --- a/java-showcase/gapic-showcase/pom.xml +++ b/java-showcase/gapic-showcase/pom.xml @@ -291,6 +291,11 @@ ${slf4j1-logback.version} test + + com.google.api + logback-extension + 0.1.0-SNAPSHOT + diff --git a/java-showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/it/logging/TestMdcAppender.java b/java-showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/it/logging/TestMdcAppender.java new file mode 100644 index 0000000000..a94272f41d --- /dev/null +++ b/java-showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/it/logging/TestMdcAppender.java @@ -0,0 +1,15 @@ +package com.google.showcase.v1beta1.it.logging; + +import ch.qos.logback.classic.spi.ILoggingEvent; +import ch.qos.logback.core.UnsynchronizedAppenderBase; +import com.google.api.logging.SDKLoggingMdcJsonProvider; + +public class TestMdcAppender extends UnsynchronizedAppenderBase { + + private final SDKLoggingMdcJsonProvider provider = new SDKLoggingMdcJsonProvider(); + + @Override + protected void append(ILoggingEvent eventObject) { + + } +} From 310e546efe260237783d132339c2b51980b9c3aa Mon Sep 17 00:00:00 2001 From: cloud-java-bot Date: Fri, 14 Mar 2025 19:01:41 +0000 Subject: [PATCH 22/57] chore: generate libraries at Fri Mar 14 19:00:09 UTC 2025 --- .../google/showcase/v1beta1/it/logging/TestMdcAppender.java | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/java-showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/it/logging/TestMdcAppender.java b/java-showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/it/logging/TestMdcAppender.java index a94272f41d..071a03c539 100644 --- a/java-showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/it/logging/TestMdcAppender.java +++ b/java-showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/it/logging/TestMdcAppender.java @@ -9,7 +9,5 @@ public class TestMdcAppender extends UnsynchronizedAppenderBase { private final SDKLoggingMdcJsonProvider provider = new SDKLoggingMdcJsonProvider(); @Override - protected void append(ILoggingEvent eventObject) { - - } + protected void append(ILoggingEvent eventObject) {} } From 8bfd02a408a5da8a5a4bc9ca9be1a281025d292a Mon Sep 17 00:00:00 2001 From: Joe Wang Date: Fri, 14 Mar 2025 19:02:36 -0400 Subject: [PATCH 23/57] remove optional --- java-sdk-logging/logback-extension/pom.xml | 2 -- 1 file changed, 2 deletions(-) diff --git a/java-sdk-logging/logback-extension/pom.xml b/java-sdk-logging/logback-extension/pom.xml index 6d3eed5baf..907772cef0 100644 --- a/java-sdk-logging/logback-extension/pom.xml +++ b/java-sdk-logging/logback-extension/pom.xml @@ -23,13 +23,11 @@ ch.qos.logback logback-classic ${logback.version} - true net.logstash.logback logstash-logback-encoder ${logstash.encoder.version} - true org.junit.jupiter From 7c8e6534dbb6df47a1a2261887fa4daed5ef3e16 Mon Sep 17 00:00:00 2001 From: Joe Wang Date: Fri, 14 Mar 2025 19:02:58 -0400 Subject: [PATCH 24/57] add showcase tests --- java-showcase/gapic-showcase/pom.xml | 1 + .../v1beta1/it/logging/ITLogging1x.java | 26 ++++++++++ .../v1beta1/it/logging/TestMdcAppender.java | 50 +++++++++++++++++-- 3 files changed, 73 insertions(+), 4 deletions(-) diff --git a/java-showcase/gapic-showcase/pom.xml b/java-showcase/gapic-showcase/pom.xml index de6dbb013b..8f9777de5f 100644 --- a/java-showcase/gapic-showcase/pom.xml +++ b/java-showcase/gapic-showcase/pom.xml @@ -295,6 +295,7 @@ com.google.api logback-extension 0.1.0-SNAPSHOT + test diff --git a/java-showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/it/logging/ITLogging1x.java b/java-showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/it/logging/ITLogging1x.java index d0dec4b80d..d9ce8bd36d 100644 --- a/java-showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/it/logging/ITLogging1x.java +++ b/java-showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/it/logging/ITLogging1x.java @@ -20,6 +20,7 @@ import ch.qos.logback.classic.Level; import ch.qos.logback.classic.spi.ILoggingEvent; +import com.fasterxml.jackson.databind.JsonNode; import com.google.api.gax.grpc.GrpcLoggingInterceptor; import com.google.api.gax.httpjson.HttpJsonLoggingInterceptor; import com.google.common.collect.ImmutableMap; @@ -27,6 +28,7 @@ import com.google.showcase.v1beta1.EchoRequest; import com.google.showcase.v1beta1.EchoResponse; import com.google.showcase.v1beta1.it.util.TestClientInitializer; +import java.util.List; import java.util.Map; import java.util.concurrent.TimeUnit; import org.junit.jupiter.api.AfterAll; @@ -61,6 +63,15 @@ private TestAppender setupTestLogger(Class clazz, Level level) { return testAppender; } + private TestMdcAppender setupTestMdcAppender(Class clazz, Level level) { + TestMdcAppender appender = new TestMdcAppender(); + appender.start(); + Logger logger = LoggerFactory.getLogger(clazz); + ((ch.qos.logback.classic.Logger) logger).setLevel(level); + ((ch.qos.logback.classic.Logger) logger).addAppender(appender); + return appender; + } + @BeforeAll static void createClients() throws Exception { // Create gRPC Echo Client @@ -121,6 +132,21 @@ void testGrpc_receiveContent_logDebug() { testAppender.stop(); } + @Test + void testGrpc_receiveContent_logDebug_structured_log() { + TestMdcAppender testAppender = setupTestMdcAppender(GrpcLoggingInterceptor.class, Level.DEBUG); + assertThat(echoGrpc(ECHO_STRING)).isEqualTo(ECHO_STRING); + List jsonNodes = testAppender.getLoggingEntries(); + assertThat(jsonNodes.size()).isEqualTo(2); + System.out.println(jsonNodes.get(1)); + assertThat(jsonNodes.get(0).get("message").asText()).isEqualTo("Sending request"); + assertThat(jsonNodes.get(0).get("request.payload").get("content").asText()).isEqualTo("echo?"); + assertThat(jsonNodes.get(1).get("message").asText()).isEqualTo("Received response"); + assertThat(jsonNodes.get(1).get("response.payload").get("content").asText()).isEqualTo("echo?"); + + testAppender.stop(); + } + @Test void testGrpc_receiveContent_logInfo() { TestAppender testAppender = setupTestLogger(GrpcLoggingInterceptor.class, Level.INFO); diff --git a/java-showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/it/logging/TestMdcAppender.java b/java-showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/it/logging/TestMdcAppender.java index 071a03c539..910458d717 100644 --- a/java-showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/it/logging/TestMdcAppender.java +++ b/java-showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/it/logging/TestMdcAppender.java @@ -1,13 +1,55 @@ package com.google.showcase.v1beta1.it.logging; import ch.qos.logback.classic.spi.ILoggingEvent; -import ch.qos.logback.core.UnsynchronizedAppenderBase; +import ch.qos.logback.core.AppenderBase; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; import com.google.api.logging.SDKLoggingMdcJsonProvider; +import java.io.IOException; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import net.logstash.logback.encoder.LogstashEncoder; -public class TestMdcAppender extends UnsynchronizedAppenderBase { - private final SDKLoggingMdcJsonProvider provider = new SDKLoggingMdcJsonProvider(); +public class TestMdcAppender extends AppenderBase { + + private final LogstashEncoder encoder; + + private final ObjectMapper objectMapper; + + private final List jsonNodes; + + public TestMdcAppender() { + encoder = new LogstashEncoder(); + encoder.addProvider(new SDKLoggingMdcJsonProvider()); + objectMapper = new ObjectMapper(); + jsonNodes = new ArrayList<>(); + } @Override - protected void append(ILoggingEvent eventObject) {} + public void start() { + encoder.start(); + super.start(); + } + + @Override + public void stop() { + encoder.stop(); + super.stop(); + } + + @Override + protected void append(ILoggingEvent eventObject) { + byte[] encodedBytes = encoder.encode(eventObject); + try { + jsonNodes.add(objectMapper.readTree(encodedBytes)); + } catch (IOException e) { + throw new RuntimeException(e); + } + } + + public List getLoggingEntries() { + return Collections.unmodifiableList(jsonNodes); + } } From 99bf64b90612396f78913022e0386481c5d6679f Mon Sep 17 00:00:00 2001 From: cloud-java-bot Date: Fri, 14 Mar 2025 23:08:35 +0000 Subject: [PATCH 25/57] chore: generate libraries at Fri Mar 14 23:07:02 UTC 2025 --- .../com/google/showcase/v1beta1/it/logging/TestMdcAppender.java | 1 - 1 file changed, 1 deletion(-) diff --git a/java-showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/it/logging/TestMdcAppender.java b/java-showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/it/logging/TestMdcAppender.java index 910458d717..71658a6da1 100644 --- a/java-showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/it/logging/TestMdcAppender.java +++ b/java-showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/it/logging/TestMdcAppender.java @@ -11,7 +11,6 @@ import java.util.List; import net.logstash.logback.encoder.LogstashEncoder; - public class TestMdcAppender extends AppenderBase { private final LogstashEncoder encoder; From dc73a5150bea4fc91ea0e8d45dd54cfc6a6a1753 Mon Sep 17 00:00:00 2001 From: Joe Wang Date: Fri, 14 Mar 2025 19:10:17 -0400 Subject: [PATCH 26/57] remove child version --- java-sdk-logging/java-sdk-logging-bom/pom.xml | 1 - java-sdk-logging/logback-extension/pom.xml | 1 - 2 files changed, 2 deletions(-) diff --git a/java-sdk-logging/java-sdk-logging-bom/pom.xml b/java-sdk-logging/java-sdk-logging-bom/pom.xml index bb84ab760e..a674778af2 100644 --- a/java-sdk-logging/java-sdk-logging-bom/pom.xml +++ b/java-sdk-logging/java-sdk-logging-bom/pom.xml @@ -12,7 +12,6 @@ pom java-sdk-logging-bom - 0.1.0-SNAPSHOT UTF-8 diff --git a/java-sdk-logging/logback-extension/pom.xml b/java-sdk-logging/logback-extension/pom.xml index 907772cef0..38414cd26c 100644 --- a/java-sdk-logging/logback-extension/pom.xml +++ b/java-sdk-logging/logback-extension/pom.xml @@ -10,7 +10,6 @@ ../pom.xml logback-extension - 0.1.0-SNAPSHOT UTF-8 From c029d4fbf0e219890d33b68ae6279f858478831e Mon Sep 17 00:00:00 2001 From: Joe Wang Date: Fri, 14 Mar 2025 20:15:39 -0400 Subject: [PATCH 27/57] update showcase tests --- .../v1beta1/it/logging/ITLogging1x.java | 20 ++++++++++------- .../v1beta1/it/logging/TestMdcAppender.java | 22 +++++-------------- 2 files changed, 17 insertions(+), 25 deletions(-) diff --git a/java-showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/it/logging/ITLogging1x.java b/java-showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/it/logging/ITLogging1x.java index d9ce8bd36d..4ddbd33d96 100644 --- a/java-showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/it/logging/ITLogging1x.java +++ b/java-showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/it/logging/ITLogging1x.java @@ -21,6 +21,7 @@ import ch.qos.logback.classic.Level; import ch.qos.logback.classic.spi.ILoggingEvent; import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; import com.google.api.gax.grpc.GrpcLoggingInterceptor; import com.google.api.gax.httpjson.HttpJsonLoggingInterceptor; import com.google.common.collect.ImmutableMap; @@ -28,6 +29,7 @@ import com.google.showcase.v1beta1.EchoRequest; import com.google.showcase.v1beta1.EchoResponse; import com.google.showcase.v1beta1.it.util.TestClientInitializer; +import java.io.IOException; import java.util.List; import java.util.Map; import java.util.concurrent.TimeUnit; @@ -51,6 +53,7 @@ public class ITLogging1x { private static final String ENDPOINT = "http://localhost:7469"; private static final String SENDING_REQUEST_MESSAGE = "Sending request"; private static final String RECEIVING_RESPONSE_MESSAGE = "Received response"; + private final ObjectMapper objectMapper = new ObjectMapper(); private static Logger logger = LoggerFactory.getLogger(ITLogging1x.class); @@ -133,16 +136,17 @@ void testGrpc_receiveContent_logDebug() { } @Test - void testGrpc_receiveContent_logDebug_structured_log() { + void testGrpc_receiveContent_logDebug_structured_log() throws IOException { TestMdcAppender testAppender = setupTestMdcAppender(GrpcLoggingInterceptor.class, Level.DEBUG); assertThat(echoGrpc(ECHO_STRING)).isEqualTo(ECHO_STRING); - List jsonNodes = testAppender.getLoggingEntries(); - assertThat(jsonNodes.size()).isEqualTo(2); - System.out.println(jsonNodes.get(1)); - assertThat(jsonNodes.get(0).get("message").asText()).isEqualTo("Sending request"); - assertThat(jsonNodes.get(0).get("request.payload").get("content").asText()).isEqualTo("echo?"); - assertThat(jsonNodes.get(1).get("message").asText()).isEqualTo("Received response"); - assertThat(jsonNodes.get(1).get("response.payload").get("content").asText()).isEqualTo("echo?"); + List byteLists = testAppender.getByteLists(); + assertThat(byteLists.size()).isEqualTo(2); + JsonNode request = objectMapper.readTree(byteLists.get(0)); + assertThat(request.get("message").asText()).isEqualTo("Sending request"); + assertThat(request.get("request.payload").get("content").asText()).isEqualTo("echo?"); + JsonNode response = objectMapper.readTree(byteLists.get(1)); + assertThat(response.get("message").asText()).isEqualTo("Received response"); + assertThat(response.get("response.payload").get("content").asText()).isEqualTo("echo?"); testAppender.stop(); } diff --git a/java-showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/it/logging/TestMdcAppender.java b/java-showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/it/logging/TestMdcAppender.java index 71658a6da1..5fa1b06ea3 100644 --- a/java-showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/it/logging/TestMdcAppender.java +++ b/java-showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/it/logging/TestMdcAppender.java @@ -2,10 +2,7 @@ import ch.qos.logback.classic.spi.ILoggingEvent; import ch.qos.logback.core.AppenderBase; -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; import com.google.api.logging.SDKLoggingMdcJsonProvider; -import java.io.IOException; import java.util.ArrayList; import java.util.Collections; import java.util.List; @@ -14,16 +11,12 @@ public class TestMdcAppender extends AppenderBase { private final LogstashEncoder encoder; - - private final ObjectMapper objectMapper; - - private final List jsonNodes; + private final List byteLists; public TestMdcAppender() { encoder = new LogstashEncoder(); encoder.addProvider(new SDKLoggingMdcJsonProvider()); - objectMapper = new ObjectMapper(); - jsonNodes = new ArrayList<>(); + byteLists = new ArrayList<>(); } @Override @@ -40,15 +33,10 @@ public void stop() { @Override protected void append(ILoggingEvent eventObject) { - byte[] encodedBytes = encoder.encode(eventObject); - try { - jsonNodes.add(objectMapper.readTree(encodedBytes)); - } catch (IOException e) { - throw new RuntimeException(e); - } + byteLists.add(encoder.encode(eventObject)); } - public List getLoggingEntries() { - return Collections.unmodifiableList(jsonNodes); + public List getByteLists() { + return Collections.unmodifiableList(byteLists); } } From d3a8988cf61ac54e94e8a32c1e8bee57bea21d4a Mon Sep 17 00:00:00 2001 From: Joe Wang Date: Fri, 14 Mar 2025 20:29:40 -0400 Subject: [PATCH 28/57] exclude compile appender in 1.x --- java-showcase/gapic-showcase/pom.xml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/java-showcase/gapic-showcase/pom.xml b/java-showcase/gapic-showcase/pom.xml index 8f9777de5f..5b379da1f4 100644 --- a/java-showcase/gapic-showcase/pom.xml +++ b/java-showcase/gapic-showcase/pom.xml @@ -254,6 +254,9 @@ org.apache.maven.plugins maven-compiler-plugin + + **/com/google/showcase/v1beta1/it/logging/TestMdcAppender.java + **/com/google/showcase/v1beta1/it/*.java **/com/google/showcase/v1beta1/it/logging/ITLoggingDisabled.java From 9fd9d568abe197ce941c9c352e4931d08cb4574d Mon Sep 17 00:00:00 2001 From: Joe Wang Date: Fri, 14 Mar 2025 20:42:09 -0400 Subject: [PATCH 29/57] exclude compile appender in 1.x --- java-showcase/gapic-showcase/pom.xml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/java-showcase/gapic-showcase/pom.xml b/java-showcase/gapic-showcase/pom.xml index 5b379da1f4..f7baf0151a 100644 --- a/java-showcase/gapic-showcase/pom.xml +++ b/java-showcase/gapic-showcase/pom.xml @@ -254,13 +254,12 @@ org.apache.maven.plugins maven-compiler-plugin - - **/com/google/showcase/v1beta1/it/logging/TestMdcAppender.java - **/com/google/showcase/v1beta1/it/*.java **/com/google/showcase/v1beta1/it/logging/ITLoggingDisabled.java **/com/google/showcase/v1beta1/it/logging/ITLogging1x.java + + **/com/google/showcase/v1beta1/it/logging/TestMdcAppender.java From 68c7a3c31e8bb078974f2b7504150261c4948b2a Mon Sep 17 00:00:00 2001 From: Joe Wang Date: Fri, 14 Mar 2025 20:51:43 -0400 Subject: [PATCH 30/57] exclude compile appender in 1.x --- java-showcase/gapic-showcase/pom.xml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/java-showcase/gapic-showcase/pom.xml b/java-showcase/gapic-showcase/pom.xml index f7baf0151a..686432bbae 100644 --- a/java-showcase/gapic-showcase/pom.xml +++ b/java-showcase/gapic-showcase/pom.xml @@ -355,6 +355,8 @@ **/com/google/showcase/v1beta1/it/*.java **/com/google/showcase/v1beta1/it/logging/ITLogging1x.java **/com/google/showcase/v1beta1/it/logging/ITLogging.java + + **/com/google/showcase/v1beta1/it/logging/TestMdcAppender.java From 9e6979652aee68a1fc3629a2f8222b1d8a251f04 Mon Sep 17 00:00:00 2001 From: Joe Wang Date: Sat, 15 Mar 2025 10:48:33 -0400 Subject: [PATCH 31/57] add unit tests --- .../SDKLoggingMdcJsonProviderTest.java | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/java-sdk-logging/logback-extension/src/test/java/com/google/api/logging/SDKLoggingMdcJsonProviderTest.java b/java-sdk-logging/logback-extension/src/test/java/com/google/api/logging/SDKLoggingMdcJsonProviderTest.java index 0ea589e7a3..15fe052a60 100644 --- a/java-sdk-logging/logback-extension/src/test/java/com/google/api/logging/SDKLoggingMdcJsonProviderTest.java +++ b/java-sdk-logging/logback-extension/src/test/java/com/google/api/logging/SDKLoggingMdcJsonProviderTest.java @@ -44,6 +44,7 @@ import java.io.IOException; import java.util.HashMap; import java.util.Map; +import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -60,6 +61,26 @@ void init() { when(event.getMDCPropertyMap()).thenReturn(mdc); } + @AfterEach + void post() { + mdc.clear(); + } + + @Test + void testWriteNullMdcMap() throws IOException { + when(event.getMDCPropertyMap()).thenReturn(null); + provider.writeTo(generator, event); + verify(generator, never()).writeFieldName(anyString()); + verify(generator, never()).writeTree(any(JsonNode.class)); + } + + @Test + void testWriteEmptyMdcMap() throws IOException { + provider.writeTo(generator, event); + verify(generator, never()).writeFieldName(anyString()); + verify(generator, never()).writeTree(any(JsonNode.class)); + } + @Test void testWriteValidJsonStringToJsonTree() throws IOException { mdc.put( From 4b882891d2661a263f9fee26e8c0b38f1f32490e Mon Sep 17 00:00:00 2001 From: Joe Wang Date: Sat, 15 Mar 2025 11:03:26 -0400 Subject: [PATCH 32/57] add early return --- .../api/logging/SDKLoggingMdcJsonProvider.java | 4 ++++ .../api/logging/SDKLoggingMdcJsonProviderTest.java | 14 +++++++++++--- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/java-sdk-logging/logback-extension/src/main/java/com/google/api/logging/SDKLoggingMdcJsonProvider.java b/java-sdk-logging/logback-extension/src/main/java/com/google/api/logging/SDKLoggingMdcJsonProvider.java index 20e8afa908..7fcf12c4de 100644 --- a/java-sdk-logging/logback-extension/src/main/java/com/google/api/logging/SDKLoggingMdcJsonProvider.java +++ b/java-sdk-logging/logback-extension/src/main/java/com/google/api/logging/SDKLoggingMdcJsonProvider.java @@ -52,6 +52,10 @@ public void writeTo(JsonGenerator generator, ILoggingEvent event) throws IOExcep boolean hasWrittenStart = false; for (Map.Entry entry : mdcProperties.entrySet()) { + if (entry.getKey() == null || entry.getValue() == null) { + return; + } + String fieldName = entry.getKey(); if (!hasWrittenStart && getFieldName() != null) { diff --git a/java-sdk-logging/logback-extension/src/test/java/com/google/api/logging/SDKLoggingMdcJsonProviderTest.java b/java-sdk-logging/logback-extension/src/test/java/com/google/api/logging/SDKLoggingMdcJsonProviderTest.java index 15fe052a60..6510a5fc88 100644 --- a/java-sdk-logging/logback-extension/src/test/java/com/google/api/logging/SDKLoggingMdcJsonProviderTest.java +++ b/java-sdk-logging/logback-extension/src/test/java/com/google/api/logging/SDKLoggingMdcJsonProviderTest.java @@ -30,7 +30,6 @@ package com.google.api.logging; -import static org.junit.jupiter.api.Assertions.assertThrows; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyString; import static org.mockito.Mockito.mock; @@ -120,9 +119,18 @@ void testWriteInvalidJsonStringToString() throws IOException { } @Test - void testWriteNullThrowsException() { + void testWriteNullValueDoesNotThrowsException() throws IOException { mdc.put("json1", null); + provider.writeTo(generator, event); + verify(generator, never()).writeObject(anyString()); + verify(generator, never()).writeTree(any(JsonNode.class)); + } - assertThrows(IllegalArgumentException.class, () -> provider.writeTo(generator, event)); + @Test + void testWriteNullKeyDoesNotThrowsException() throws IOException { + mdc.put(null, "example value"); + provider.writeTo(generator, event); + verify(generator, never()).writeObject(anyString()); + verify(generator, never()).writeTree(any(JsonNode.class)); } } From 4de3bfcfe43e7424603bb544b55cfb061cc45d42 Mon Sep 17 00:00:00 2001 From: Joe Wang Date: Sat, 15 Mar 2025 11:05:05 -0400 Subject: [PATCH 33/57] refactor --- .../com/google/api/logging/SDKLoggingMdcJsonProvider.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/java-sdk-logging/logback-extension/src/main/java/com/google/api/logging/SDKLoggingMdcJsonProvider.java b/java-sdk-logging/logback-extension/src/main/java/com/google/api/logging/SDKLoggingMdcJsonProvider.java index 7fcf12c4de..fce8fad891 100644 --- a/java-sdk-logging/logback-extension/src/main/java/com/google/api/logging/SDKLoggingMdcJsonProvider.java +++ b/java-sdk-logging/logback-extension/src/main/java/com/google/api/logging/SDKLoggingMdcJsonProvider.java @@ -52,18 +52,18 @@ public void writeTo(JsonGenerator generator, ILoggingEvent event) throws IOExcep boolean hasWrittenStart = false; for (Map.Entry entry : mdcProperties.entrySet()) { - if (entry.getKey() == null || entry.getValue() == null) { + String fieldName = entry.getKey(); + String entryValueString = entry.getValue(); + if (fieldName == null || entryValueString == null) { return; } - String fieldName = entry.getKey(); - if (!hasWrittenStart && getFieldName() != null) { generator.writeObjectFieldStart(getFieldName()); hasWrittenStart = true; } generator.writeFieldName(fieldName); - String entryValueString = entry.getValue(); + try { generator.writeTree(convertToTreeNode(entryValueString)); } catch (JsonProcessingException e) { From ed28cd4768fd0dd9e440aa2d044037d9d286f34e Mon Sep 17 00:00:00 2001 From: Joe Wang Date: Sat, 15 Mar 2025 11:17:22 -0400 Subject: [PATCH 34/57] update tests --- .../api/logging/SDKLoggingMdcJsonProviderTest.java | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/java-sdk-logging/logback-extension/src/test/java/com/google/api/logging/SDKLoggingMdcJsonProviderTest.java b/java-sdk-logging/logback-extension/src/test/java/com/google/api/logging/SDKLoggingMdcJsonProviderTest.java index 6510a5fc88..ea953c4ab2 100644 --- a/java-sdk-logging/logback-extension/src/test/java/com/google/api/logging/SDKLoggingMdcJsonProviderTest.java +++ b/java-sdk-logging/logback-extension/src/test/java/com/google/api/logging/SDKLoggingMdcJsonProviderTest.java @@ -32,6 +32,7 @@ import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyString; +import static org.mockito.Mockito.inOrder; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.never; import static org.mockito.Mockito.verify; @@ -46,6 +47,7 @@ import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; +import org.mockito.InOrder; public class SDKLoggingMdcJsonProviderTest { @@ -93,9 +95,13 @@ void testWriteValidJsonStringToJsonTree() throws IOException { + " }\n" + "}"); + provider.setFieldName("log-name"); provider.writeTo(generator, event); - verify(generator).writeFieldName("json1"); - verify(generator).writeTree(any(JsonNode.class)); + InOrder inOrder = inOrder(generator); + inOrder.verify(generator).writeObjectFieldStart("log-name"); + inOrder.verify(generator).writeFieldName("json1"); + inOrder.verify(generator).writeTree(any(JsonNode.class)); + inOrder.verify(generator).writeEndObject(); } @Test @@ -110,7 +116,6 @@ void testWriteInvalidJsonStringToString() throws IOException { + " \"state\": \"ACTIVE\",\n" // the last semicolon is redundant. + " }\n" + "}"); - provider.writeTo(generator, event); verify(generator).writeFieldName("json1"); verify(generator).writeObject(anyString()); From 7529de0cd4d95b8b203f5e9e5cbb433edeab77f6 Mon Sep 17 00:00:00 2001 From: Joe Wang Date: Sat, 15 Mar 2025 11:26:06 -0400 Subject: [PATCH 35/57] rename --- .../com/google/showcase/v1beta1/it/logging/ITLogging1x.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/java-showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/it/logging/ITLogging1x.java b/java-showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/it/logging/ITLogging1x.java index 4ddbd33d96..34323764a9 100644 --- a/java-showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/it/logging/ITLogging1x.java +++ b/java-showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/it/logging/ITLogging1x.java @@ -55,7 +55,7 @@ public class ITLogging1x { private static final String RECEIVING_RESPONSE_MESSAGE = "Received response"; private final ObjectMapper objectMapper = new ObjectMapper(); - private static Logger logger = LoggerFactory.getLogger(ITLogging1x.class); + private final static Logger CLASS_LOGGER = LoggerFactory.getLogger(ITLogging1x.class); private TestAppender setupTestLogger(Class clazz, Level level) { TestAppender testAppender = new TestAppender(); @@ -95,8 +95,8 @@ static void destroyClients() throws InterruptedException { @Test void test() { - assertThat(logger.isInfoEnabled()).isTrue(); - assertThat(logger.isDebugEnabled()).isTrue(); + assertThat(CLASS_LOGGER.isInfoEnabled()).isTrue(); + assertThat(CLASS_LOGGER.isDebugEnabled()).isTrue(); } @Test From f295db810e3cac4ef5af5a5a7d36787bafe929b2 Mon Sep 17 00:00:00 2001 From: cloud-java-bot Date: Sat, 15 Mar 2025 15:31:47 +0000 Subject: [PATCH 36/57] chore: generate libraries at Sat Mar 15 15:30:16 UTC 2025 --- .../com/google/showcase/v1beta1/it/logging/ITLogging1x.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/java-showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/it/logging/ITLogging1x.java b/java-showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/it/logging/ITLogging1x.java index 34323764a9..274295a872 100644 --- a/java-showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/it/logging/ITLogging1x.java +++ b/java-showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/it/logging/ITLogging1x.java @@ -55,7 +55,7 @@ public class ITLogging1x { private static final String RECEIVING_RESPONSE_MESSAGE = "Received response"; private final ObjectMapper objectMapper = new ObjectMapper(); - private final static Logger CLASS_LOGGER = LoggerFactory.getLogger(ITLogging1x.class); + private static final Logger CLASS_LOGGER = LoggerFactory.getLogger(ITLogging1x.class); private TestAppender setupTestLogger(Class clazz, Level level) { TestAppender testAppender = new TestAppender(); From f54db563a005e5f444d3d01ae7a0dc044917ce24 Mon Sep 17 00:00:00 2001 From: Joe Wang Date: Sat, 15 Mar 2025 11:45:43 -0400 Subject: [PATCH 37/57] add showcase test --- .../v1beta1/it/logging/ITLogging1x.java | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/java-showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/it/logging/ITLogging1x.java b/java-showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/it/logging/ITLogging1x.java index 274295a872..4e06ba1fd1 100644 --- a/java-showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/it/logging/ITLogging1x.java +++ b/java-showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/it/logging/ITLogging1x.java @@ -179,6 +179,25 @@ void testGrpc_receiveContent_logInfo() { testAppender.stop(); } + @Test + void testGrpc_receiveContent_logInfo_structured_log() throws IOException { + TestMdcAppender testAppender = setupTestMdcAppender(GrpcLoggingInterceptor.class, Level.INFO); + assertThat(echoGrpc(ECHO_STRING)).isEqualTo(ECHO_STRING); + List byteLists = testAppender.getByteLists(); + assertThat(byteLists.size()).isEqualTo(2); + JsonNode request = objectMapper.readTree(byteLists.get(0)); + assertThat(request.get("message").asText()).isEqualTo("Sending request"); + assertThat(request.get("serviceName").asText()).isEqualTo(SERVICE_NAME); + assertThat(request.get("rpcName").asText()).isEqualTo(RPC_NAME); + JsonNode response = objectMapper.readTree(byteLists.get(1)); + assertThat(response.get("message").asText()).isEqualTo("Received response"); + assertThat(response.get("serviceName").asText()).isEqualTo(SERVICE_NAME); + assertThat(response.get("rpcName").asText()).isEqualTo(RPC_NAME); + assertThat(response.get("response.status").asText()).isEqualTo("OK"); + + testAppender.stop(); + } + @Test void testHttpJson_receiveContent_logDebug() { TestAppender testAppender = setupTestLogger(HttpJsonLoggingInterceptor.class, Level.DEBUG); From e71744744b637e915693f20addb13d33c6cff9e3 Mon Sep 17 00:00:00 2001 From: Joe Wang Date: Sat, 15 Mar 2025 12:38:42 -0400 Subject: [PATCH 38/57] add showcase test --- .../showcase/v1beta1/it/logging/ITLogging1x.java | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/java-showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/it/logging/ITLogging1x.java b/java-showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/it/logging/ITLogging1x.java index 4e06ba1fd1..521a8febb6 100644 --- a/java-showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/it/logging/ITLogging1x.java +++ b/java-showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/it/logging/ITLogging1x.java @@ -228,6 +228,22 @@ void testHttpJson_receiveContent_logDebug() { testAppender.stop(); } + @Test + void testHttpJson_receiveContent_logDebug_structured_log() throws IOException { + TestMdcAppender testAppender = setupTestMdcAppender(HttpJsonLoggingInterceptor.class, Level.DEBUG); + assertThat(echoHttpJson(ECHO_STRING)).isEqualTo(ECHO_STRING); + List byteLists = testAppender.getByteLists(); + assertThat(byteLists.size()).isEqualTo(2); + JsonNode request = objectMapper.readTree(byteLists.get(0)); + assertThat(request.get("message").asText()).isEqualTo("Sending request"); + assertThat(request.get("request.payload").get("content").asText()).isEqualTo("echo?"); + JsonNode response = objectMapper.readTree(byteLists.get(1)); + assertThat(response.get("message").asText()).isEqualTo("Received response"); + assertThat(response.get("response.payload").get("content").asText()).isEqualTo("echo?"); + + testAppender.stop(); + } + @Test void testHttpJson_receiveContent_logInfo() { TestAppender testAppender = setupTestLogger(HttpJsonLoggingInterceptor.class, Level.INFO); From 82370283edece8727ea3dd1c67ca97a6b104f0d6 Mon Sep 17 00:00:00 2001 From: Joe Wang Date: Sat, 15 Mar 2025 14:07:23 -0400 Subject: [PATCH 39/57] refactor test --- .../v1beta1/it/logging/ITLogging1x.java | 58 ++++++++++++------- 1 file changed, 37 insertions(+), 21 deletions(-) diff --git a/java-showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/it/logging/ITLogging1x.java b/java-showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/it/logging/ITLogging1x.java index 521a8febb6..5080ab157e 100644 --- a/java-showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/it/logging/ITLogging1x.java +++ b/java-showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/it/logging/ITLogging1x.java @@ -20,6 +20,7 @@ import ch.qos.logback.classic.Level; import ch.qos.logback.classic.spi.ILoggingEvent; +import ch.qos.logback.core.AppenderBase; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; import com.google.api.gax.grpc.GrpcLoggingInterceptor; @@ -57,22 +58,11 @@ public class ITLogging1x { private static final Logger CLASS_LOGGER = LoggerFactory.getLogger(ITLogging1x.class); - private TestAppender setupTestLogger(Class clazz, Level level) { - TestAppender testAppender = new TestAppender(); - testAppender.start(); - Logger logger = LoggerFactory.getLogger(clazz); - ((ch.qos.logback.classic.Logger) logger).setLevel(level); - ((ch.qos.logback.classic.Logger) logger).addAppender(testAppender); - return testAppender; - } - - private TestMdcAppender setupTestMdcAppender(Class clazz, Level level) { - TestMdcAppender appender = new TestMdcAppender(); + private > void setupTestLogger(T appender, Class clazz, Level level) { appender.start(); Logger logger = LoggerFactory.getLogger(clazz); ((ch.qos.logback.classic.Logger) logger).setLevel(level); ((ch.qos.logback.classic.Logger) logger).addAppender(appender); - return appender; } @BeforeAll @@ -101,7 +91,8 @@ void test() { @Test void testGrpc_receiveContent_logDebug() { - TestAppender testAppender = setupTestLogger(GrpcLoggingInterceptor.class, Level.DEBUG); + TestAppender testAppender = new TestAppender(); + setupTestLogger(testAppender, GrpcLoggingInterceptor.class, Level.DEBUG); assertThat(echoGrpc(ECHO_STRING)).isEqualTo(ECHO_STRING); assertThat(testAppender.events.size()).isEqualTo(2); @@ -137,7 +128,8 @@ void testGrpc_receiveContent_logDebug() { @Test void testGrpc_receiveContent_logDebug_structured_log() throws IOException { - TestMdcAppender testAppender = setupTestMdcAppender(GrpcLoggingInterceptor.class, Level.DEBUG); + TestMdcAppender testAppender = new TestMdcAppender(); + setupTestLogger(testAppender, GrpcLoggingInterceptor.class, Level.DEBUG); assertThat(echoGrpc(ECHO_STRING)).isEqualTo(ECHO_STRING); List byteLists = testAppender.getByteLists(); assertThat(byteLists.size()).isEqualTo(2); @@ -153,7 +145,8 @@ void testGrpc_receiveContent_logDebug_structured_log() throws IOException { @Test void testGrpc_receiveContent_logInfo() { - TestAppender testAppender = setupTestLogger(GrpcLoggingInterceptor.class, Level.INFO); + TestAppender testAppender = new TestAppender(); + setupTestLogger(testAppender, GrpcLoggingInterceptor.class, Level.INFO); assertThat(echoGrpc(ECHO_STRING)).isEqualTo(ECHO_STRING); assertThat(testAppender.events.size()).isEqualTo(2); @@ -181,7 +174,8 @@ void testGrpc_receiveContent_logInfo() { @Test void testGrpc_receiveContent_logInfo_structured_log() throws IOException { - TestMdcAppender testAppender = setupTestMdcAppender(GrpcLoggingInterceptor.class, Level.INFO); + TestMdcAppender testAppender = new TestMdcAppender(); + setupTestLogger(testAppender, GrpcLoggingInterceptor.class, Level.INFO); assertThat(echoGrpc(ECHO_STRING)).isEqualTo(ECHO_STRING); List byteLists = testAppender.getByteLists(); assertThat(byteLists.size()).isEqualTo(2); @@ -200,7 +194,8 @@ void testGrpc_receiveContent_logInfo_structured_log() throws IOException { @Test void testHttpJson_receiveContent_logDebug() { - TestAppender testAppender = setupTestLogger(HttpJsonLoggingInterceptor.class, Level.DEBUG); + TestAppender testAppender = new TestAppender(); + setupTestLogger(testAppender, HttpJsonLoggingInterceptor.class, Level.DEBUG); assertThat(echoHttpJson(ECHO_STRING)).isEqualTo(ECHO_STRING); assertThat(testAppender.events.size()).isEqualTo(2); // logging event for request @@ -230,23 +225,26 @@ void testHttpJson_receiveContent_logDebug() { @Test void testHttpJson_receiveContent_logDebug_structured_log() throws IOException { - TestMdcAppender testAppender = setupTestMdcAppender(HttpJsonLoggingInterceptor.class, Level.DEBUG); + TestMdcAppender testAppender = new TestMdcAppender(); + setupTestLogger(testAppender, HttpJsonLoggingInterceptor.class, Level.DEBUG); assertThat(echoHttpJson(ECHO_STRING)).isEqualTo(ECHO_STRING); List byteLists = testAppender.getByteLists(); assertThat(byteLists.size()).isEqualTo(2); JsonNode request = objectMapper.readTree(byteLists.get(0)); - assertThat(request.get("message").asText()).isEqualTo("Sending request"); + assertThat(request.get("request.url").asText()).isEqualTo(ENDPOINT); assertThat(request.get("request.payload").get("content").asText()).isEqualTo("echo?"); JsonNode response = objectMapper.readTree(byteLists.get(1)); - assertThat(response.get("message").asText()).isEqualTo("Received response"); + assertThat(response.get("rpcName").asText()).isEqualTo(RPC_NAME); assertThat(response.get("response.payload").get("content").asText()).isEqualTo("echo?"); + assertThat(response.get("response.status").asText()).isEqualTo("200"); testAppender.stop(); } @Test void testHttpJson_receiveContent_logInfo() { - TestAppender testAppender = setupTestLogger(HttpJsonLoggingInterceptor.class, Level.INFO); + TestAppender testAppender = new TestAppender(); + setupTestLogger(testAppender, HttpJsonLoggingInterceptor.class, Level.INFO); assertThat(echoHttpJson(ECHO_STRING)).isEqualTo(ECHO_STRING); assertThat(testAppender.events.size()).isEqualTo(2); // logging event for request @@ -270,6 +268,24 @@ void testHttpJson_receiveContent_logInfo() { testAppender.stop(); } + @Test + void testHttpJson_receiveContent_logInfo_structured_log() throws IOException { + TestMdcAppender testAppender = new TestMdcAppender(); + setupTestLogger(testAppender, HttpJsonLoggingInterceptor.class, Level.INFO); + assertThat(echoHttpJson(ECHO_STRING)).isEqualTo(ECHO_STRING); + List byteLists = testAppender.getByteLists(); + assertThat(byteLists.size()).isEqualTo(2); + JsonNode request = objectMapper.readTree(byteLists.get(0)); + assertThat(request.get("rpcName").asText()).isEqualTo(RPC_NAME); + assertThat(request.get("rpcName").asText()).isEqualTo(RPC_NAME); + JsonNode response = objectMapper.readTree(byteLists.get(1)); + assertThat(response.get("message").asText()).isEqualTo("Received response"); + assertThat(response.get("rpcName").asText()).isEqualTo(RPC_NAME); + assertThat(response.get("response.status").asText()).isEqualTo("200"); + + testAppender.stop(); + } + private String echoGrpc(String value) { EchoResponse response = grpcClient.echo(EchoRequest.newBuilder().setContent(value).build()); return response.getContent(); From 4aef5232f916722dbb0181e8b69c26263db15052 Mon Sep 17 00:00:00 2001 From: Joe Wang Date: Sat, 15 Mar 2025 14:10:27 -0400 Subject: [PATCH 40/57] format --- .../com/google/showcase/v1beta1/it/logging/ITLogging1x.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/java-showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/it/logging/ITLogging1x.java b/java-showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/it/logging/ITLogging1x.java index 5080ab157e..2aaf68e36f 100644 --- a/java-showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/it/logging/ITLogging1x.java +++ b/java-showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/it/logging/ITLogging1x.java @@ -58,7 +58,8 @@ public class ITLogging1x { private static final Logger CLASS_LOGGER = LoggerFactory.getLogger(ITLogging1x.class); - private > void setupTestLogger(T appender, Class clazz, Level level) { + private > void setupTestLogger( + T appender, Class clazz, Level level) { appender.start(); Logger logger = LoggerFactory.getLogger(clazz); ((ch.qos.logback.classic.Logger) logger).setLevel(level); From f5efa2ae1c113ff533a5a2e4b8e1ba1abd5dfdb3 Mon Sep 17 00:00:00 2001 From: Joe Wang Date: Sat, 15 Mar 2025 14:15:07 -0400 Subject: [PATCH 41/57] skip release --- java-sdk-logging/java-sdk-logging-bom/pom.xml | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/java-sdk-logging/java-sdk-logging-bom/pom.xml b/java-sdk-logging/java-sdk-logging-bom/pom.xml index a674778af2..ed5d894842 100644 --- a/java-sdk-logging/java-sdk-logging-bom/pom.xml +++ b/java-sdk-logging/java-sdk-logging-bom/pom.xml @@ -26,4 +26,16 @@ + + + + + org.apache.maven.plugins + maven-deploy-plugin + + true + + + + \ No newline at end of file From c26da4b0b42e1824534012af026d5d270bfb122f Mon Sep 17 00:00:00 2001 From: Joe Wang Date: Sat, 15 Mar 2025 14:35:59 -0400 Subject: [PATCH 42/57] format --- .../com/google/api/logging/SDKLoggingMdcJsonProviderTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/java-sdk-logging/logback-extension/src/test/java/com/google/api/logging/SDKLoggingMdcJsonProviderTest.java b/java-sdk-logging/logback-extension/src/test/java/com/google/api/logging/SDKLoggingMdcJsonProviderTest.java index ea953c4ab2..cc0d4c0e73 100644 --- a/java-sdk-logging/logback-extension/src/test/java/com/google/api/logging/SDKLoggingMdcJsonProviderTest.java +++ b/java-sdk-logging/logback-extension/src/test/java/com/google/api/logging/SDKLoggingMdcJsonProviderTest.java @@ -49,7 +49,7 @@ import org.junit.jupiter.api.Test; import org.mockito.InOrder; -public class SDKLoggingMdcJsonProviderTest { +class SDKLoggingMdcJsonProviderTest { private SDKLoggingMdcJsonProvider provider = new SDKLoggingMdcJsonProvider(); private JsonGenerator generator = mock(JsonGenerator.class); From 12ea13735c1dcc5f52b5fd301175403fff4a2dd2 Mon Sep 17 00:00:00 2001 From: Joe Wang Date: Tue, 18 Mar 2025 13:24:08 -0400 Subject: [PATCH 43/57] update root pom --- pom.xml | 1 - 1 file changed, 1 deletion(-) diff --git a/pom.xml b/pom.xml index 85fd91a3db..6e328677b6 100644 --- a/pom.xml +++ b/pom.xml @@ -24,7 +24,6 @@ gapic-generator-java-bom java-shared-dependencies sdk-platform-java-config - java-sdk-logging From cfc9af3d19ddeec2f08940f0629f2d15fb2239a7 Mon Sep 17 00:00:00 2001 From: Joe Wang Date: Tue, 18 Mar 2025 13:43:28 -0400 Subject: [PATCH 44/57] install logging module in showcase ci --- .github/workflows/ci.yaml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index a3b871ae38..358e72dadf 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -228,6 +228,10 @@ jobs: - name: Install Maven modules run: | mvn install -B -ntp -DskipTests -Dclirr.skip -Dcheckstyle.skip + - name: Install logging module # this module is not part of root project. + run: | + mvn install -B -ntp -DskipTests -Dclirr.skip -Dcheckstyle.skip + working-directory: java-sdk-logging - name: Java Linter working-directory: java-showcase run: | From 9ea01fa14ef51c3f66eba831088106c760f25a25 Mon Sep 17 00:00:00 2001 From: Joe Wang Date: Tue, 18 Mar 2025 14:33:14 -0400 Subject: [PATCH 45/57] continue --- .../java/com/google/api/logging/SDKLoggingMdcJsonProvider.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/java-sdk-logging/logback-extension/src/main/java/com/google/api/logging/SDKLoggingMdcJsonProvider.java b/java-sdk-logging/logback-extension/src/main/java/com/google/api/logging/SDKLoggingMdcJsonProvider.java index fce8fad891..30386ff39b 100644 --- a/java-sdk-logging/logback-extension/src/main/java/com/google/api/logging/SDKLoggingMdcJsonProvider.java +++ b/java-sdk-logging/logback-extension/src/main/java/com/google/api/logging/SDKLoggingMdcJsonProvider.java @@ -55,7 +55,7 @@ public void writeTo(JsonGenerator generator, ILoggingEvent event) throws IOExcep String fieldName = entry.getKey(); String entryValueString = entry.getValue(); if (fieldName == null || entryValueString == null) { - return; + continue; } if (!hasWrittenStart && getFieldName() != null) { From 89c469a22e828190d62fa0604a6e4db44540bfcd Mon Sep 17 00:00:00 2001 From: Joe Wang Date: Tue, 18 Mar 2025 14:33:24 -0400 Subject: [PATCH 46/57] add unit tests --- .../SDKLoggingMdcJsonProviderTest.java | 45 +++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/java-sdk-logging/logback-extension/src/test/java/com/google/api/logging/SDKLoggingMdcJsonProviderTest.java b/java-sdk-logging/logback-extension/src/test/java/com/google/api/logging/SDKLoggingMdcJsonProviderTest.java index cc0d4c0e73..58b60cbadd 100644 --- a/java-sdk-logging/logback-extension/src/test/java/com/google/api/logging/SDKLoggingMdcJsonProviderTest.java +++ b/java-sdk-logging/logback-extension/src/test/java/com/google/api/logging/SDKLoggingMdcJsonProviderTest.java @@ -35,6 +35,7 @@ import static org.mockito.Mockito.inOrder; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.never; +import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; @@ -104,6 +105,50 @@ void testWriteValidJsonStringToJsonTree() throws IOException { inOrder.verify(generator).writeEndObject(); } + @Test + void testWriteValidJsonStringAndNullKeyToJsonTree() throws IOException { + mdc.put( + "json1", + "{\n" + + " \"@version\": \"1\",\n" + + " \"textPayload\": \"Received response\",\n" + + " \"response.payload\": {\n" + + " \"name\": \"example\",\n" + + " \"state\": \"ACTIVE\"\n" + + " }\n" + + "}"); + mdc.put(null, "example value"); + + provider.setFieldName("log-name"); + provider.writeTo(generator, event); + verify(generator, times(1)).writeObjectFieldStart("log-name"); + verify(generator, times(1)).writeFieldName("json1"); + verify(generator, times(1)).writeTree(any(JsonNode.class)); + verify(generator, never()).writeObject(anyString()); + verify(generator, times(1)).writeEndObject(); + } + + @Test + void testWriteValidJsonStringAndValidPairToJsonTree() throws IOException { + mdc.put( + "json1", + "{\n" + + " \"@version\": \"1\",\n" + + " \"textPayload\": \"Received response\",\n" + + " \"response.payload\": {\n" + + " \"name\": \"example\",\n" + + " \"state\": \"ACTIVE\"\n" + + " }\n" + + "}"); + mdc.put("example key", "example value"); + + provider.writeTo(generator, event); + verify(generator, times(1)).writeFieldName("json1"); + verify(generator, times(1)).writeFieldName("example key"); + verify(generator, times(1)).writeTree(any(JsonNode.class)); + verify(generator, times(1)).writeObject(anyString()); + } + @Test void testWriteInvalidJsonStringToString() throws IOException { mdc.put( From 3179277874f671a1adc4a461b0ad9677bea2b872 Mon Sep 17 00:00:00 2001 From: Joe Wang Date: Tue, 18 Mar 2025 15:39:38 -0400 Subject: [PATCH 47/57] add included key --- .../com/google/api/logging/SDKLoggingMdcJsonProvider.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/java-sdk-logging/logback-extension/src/main/java/com/google/api/logging/SDKLoggingMdcJsonProvider.java b/java-sdk-logging/logback-extension/src/main/java/com/google/api/logging/SDKLoggingMdcJsonProvider.java index 30386ff39b..4aa4882701 100644 --- a/java-sdk-logging/logback-extension/src/main/java/com/google/api/logging/SDKLoggingMdcJsonProvider.java +++ b/java-sdk-logging/logback-extension/src/main/java/com/google/api/logging/SDKLoggingMdcJsonProvider.java @@ -54,7 +54,13 @@ public void writeTo(JsonGenerator generator, ILoggingEvent event) throws IOExcep for (Map.Entry entry : mdcProperties.entrySet()) { String fieldName = entry.getKey(); String entryValueString = entry.getValue(); - if (fieldName == null || entryValueString == null) { + // an entry will be skipped if one of the scenario happens: + // 1. key or value is null + // 2. includeMdcKeyNames is not empty and the key is not in the list + // 3. excludeMdcKeyNames is not empty and the key is in the list + if (fieldName == null || entryValueString == null + || !(getIncludeMdcKeyNames().isEmpty() || getIncludeMdcKeyNames().contains(fieldName)) + || (!getExcludeMdcKeyNames().isEmpty() && getExcludeMdcKeyNames().contains(fieldName))) { continue; } From 39f94ed3fe9cb57d92deb94d16f596ee9aa3d1f2 Mon Sep 17 00:00:00 2001 From: Joe Wang Date: Tue, 18 Mar 2025 15:39:49 -0400 Subject: [PATCH 48/57] add unit tests --- .../SDKLoggingMdcJsonProviderTest.java | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/java-sdk-logging/logback-extension/src/test/java/com/google/api/logging/SDKLoggingMdcJsonProviderTest.java b/java-sdk-logging/logback-extension/src/test/java/com/google/api/logging/SDKLoggingMdcJsonProviderTest.java index 58b60cbadd..6181214f24 100644 --- a/java-sdk-logging/logback-extension/src/test/java/com/google/api/logging/SDKLoggingMdcJsonProviderTest.java +++ b/java-sdk-logging/logback-extension/src/test/java/com/google/api/logging/SDKLoggingMdcJsonProviderTest.java @@ -43,6 +43,7 @@ import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.databind.JsonNode; import java.io.IOException; +import java.util.Collections; import java.util.HashMap; import java.util.Map; import org.junit.jupiter.api.AfterEach; @@ -149,6 +150,27 @@ void testWriteValidJsonStringAndValidPairToJsonTree() throws IOException { verify(generator, times(1)).writeObject(anyString()); } + @Test + void testWriteToJsonTreeIncludedKey() throws IOException { + mdc.put( + "json1", + "{\n" + + " \"@version\": \"1\",\n" + + " \"textPayload\": \"Received response\",\n" + + " \"response.payload\": {\n" + + " \"name\": \"example\",\n" + + " \"state\": \"ACTIVE\"\n" + + " }\n" + + "}"); + mdc.put("example key", "example value"); + provider.setIncludeMdcKeyNames(Collections.singletonList("json1")); + provider.writeTo(generator, event); + verify(generator, times(1)).writeFieldName("json1"); + verify(generator, never()).writeFieldName("example key"); + verify(generator, times(1)).writeTree(any(JsonNode.class)); + verify(generator, never()).writeObject(anyString()); + } + @Test void testWriteInvalidJsonStringToString() throws IOException { mdc.put( From b8db96f2ab4600445d3cef1face1141d1d6fb81c Mon Sep 17 00:00:00 2001 From: Joe Wang Date: Tue, 18 Mar 2025 15:51:08 -0400 Subject: [PATCH 49/57] format --- .../java/com/google/api/logging/SDKLoggingMdcJsonProvider.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/java-sdk-logging/logback-extension/src/main/java/com/google/api/logging/SDKLoggingMdcJsonProvider.java b/java-sdk-logging/logback-extension/src/main/java/com/google/api/logging/SDKLoggingMdcJsonProvider.java index 4aa4882701..8ac23b9afc 100644 --- a/java-sdk-logging/logback-extension/src/main/java/com/google/api/logging/SDKLoggingMdcJsonProvider.java +++ b/java-sdk-logging/logback-extension/src/main/java/com/google/api/logging/SDKLoggingMdcJsonProvider.java @@ -58,7 +58,8 @@ public void writeTo(JsonGenerator generator, ILoggingEvent event) throws IOExcep // 1. key or value is null // 2. includeMdcKeyNames is not empty and the key is not in the list // 3. excludeMdcKeyNames is not empty and the key is in the list - if (fieldName == null || entryValueString == null + if (fieldName == null + || entryValueString == null || !(getIncludeMdcKeyNames().isEmpty() || getIncludeMdcKeyNames().contains(fieldName)) || (!getExcludeMdcKeyNames().isEmpty() && getExcludeMdcKeyNames().contains(fieldName))) { continue; From 6ed523ec28774c478f069d2c7e9740c24069d280 Mon Sep 17 00:00:00 2001 From: Joe Wang Date: Tue, 18 Mar 2025 16:02:15 -0400 Subject: [PATCH 50/57] add unit tests --- .../SDKLoggingMdcJsonProviderTest.java | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/java-sdk-logging/logback-extension/src/test/java/com/google/api/logging/SDKLoggingMdcJsonProviderTest.java b/java-sdk-logging/logback-extension/src/test/java/com/google/api/logging/SDKLoggingMdcJsonProviderTest.java index 6181214f24..8f668e607f 100644 --- a/java-sdk-logging/logback-extension/src/test/java/com/google/api/logging/SDKLoggingMdcJsonProviderTest.java +++ b/java-sdk-logging/logback-extension/src/test/java/com/google/api/logging/SDKLoggingMdcJsonProviderTest.java @@ -43,8 +43,10 @@ import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.databind.JsonNode; import java.io.IOException; +import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; +import java.util.List; import java.util.Map; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; @@ -171,6 +173,29 @@ void testWriteToJsonTreeIncludedKey() throws IOException { verify(generator, never()).writeObject(anyString()); } + @Test + void testWriteToJsonTreeExcludedKey() throws IOException { + mdc.put( + "json1", + "{\n" + + " \"@version\": \"1\",\n" + + " \"textPayload\": \"Received response\",\n" + + " \"response.payload\": {\n" + + " \"name\": \"example\",\n" + + " \"state\": \"ACTIVE\"\n" + + " }\n" + + "}"); + mdc.put("example key", "example value"); + List excluded = new ArrayList<>(); + excluded.add("json1"); + excluded.add("example key"); + provider.setExcludeMdcKeyNames(excluded); + provider.writeTo(generator, event); + verify(generator, never()).writeFieldName(anyString()); + verify(generator, never()).writeTree(any(JsonNode.class)); + verify(generator, never()).writeObject(anyString()); + } + @Test void testWriteInvalidJsonStringToString() throws IOException { mdc.put( From 6eb0f8e82d6a1f61e41017df285ca000a768f945 Mon Sep 17 00:00:00 2001 From: Joe Wang Date: Tue, 18 Mar 2025 16:11:16 -0400 Subject: [PATCH 51/57] change group id in showcase --- java-showcase/gapic-showcase/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/java-showcase/gapic-showcase/pom.xml b/java-showcase/gapic-showcase/pom.xml index 686432bbae..b77ceff9e6 100644 --- a/java-showcase/gapic-showcase/pom.xml +++ b/java-showcase/gapic-showcase/pom.xml @@ -294,7 +294,7 @@ test - com.google.api + com.google.cloud logback-extension 0.1.0-SNAPSHOT test From 2cc02e555ec4270f33cad9c5480748efaf4d1807 Mon Sep 17 00:00:00 2001 From: Joe Wang Date: Tue, 18 Mar 2025 16:34:28 -0400 Subject: [PATCH 52/57] add key replacement --- .../logging/SDKLoggingMdcJsonProvider.java | 1 + .../SDKLoggingMdcJsonProviderTest.java | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+) diff --git a/java-sdk-logging/logback-extension/src/main/java/com/google/api/logging/SDKLoggingMdcJsonProvider.java b/java-sdk-logging/logback-extension/src/main/java/com/google/api/logging/SDKLoggingMdcJsonProvider.java index 8ac23b9afc..4397b9db88 100644 --- a/java-sdk-logging/logback-extension/src/main/java/com/google/api/logging/SDKLoggingMdcJsonProvider.java +++ b/java-sdk-logging/logback-extension/src/main/java/com/google/api/logging/SDKLoggingMdcJsonProvider.java @@ -65,6 +65,7 @@ public void writeTo(JsonGenerator generator, ILoggingEvent event) throws IOExcep continue; } + fieldName = getMdcKeyFieldNames().getOrDefault(entry.getKey(), fieldName); if (!hasWrittenStart && getFieldName() != null) { generator.writeObjectFieldStart(getFieldName()); hasWrittenStart = true; diff --git a/java-sdk-logging/logback-extension/src/test/java/com/google/api/logging/SDKLoggingMdcJsonProviderTest.java b/java-sdk-logging/logback-extension/src/test/java/com/google/api/logging/SDKLoggingMdcJsonProviderTest.java index 8f668e607f..8b080b90df 100644 --- a/java-sdk-logging/logback-extension/src/test/java/com/google/api/logging/SDKLoggingMdcJsonProviderTest.java +++ b/java-sdk-logging/logback-extension/src/test/java/com/google/api/logging/SDKLoggingMdcJsonProviderTest.java @@ -173,6 +173,25 @@ void testWriteToJsonTreeIncludedKey() throws IOException { verify(generator, never()).writeObject(anyString()); } + @Test + void testWriteToJsonTreeReplacedKey() throws IOException { + mdc.put( + "json1", + "{\n" + + " \"@version\": \"1\",\n" + + " \"textPayload\": \"Received response\",\n" + + " \"response.payload\": {\n" + + " \"name\": \"example\",\n" + + " \"state\": \"ACTIVE\"\n" + + " }\n" + + "}"); + provider.addMdcKeyFieldName("json1=new_json"); + provider.writeTo(generator, event); + verify(generator, times(1)).writeFieldName("new_json"); + verify(generator, times(1)).writeTree(any(JsonNode.class)); + verify(generator, never()).writeObject(anyString()); + } + @Test void testWriteToJsonTreeExcludedKey() throws IOException { mdc.put( From 05fcd82b8aefb3df6cbfc0d51ee0c53106036373 Mon Sep 17 00:00:00 2001 From: Joe Wang Date: Tue, 18 Mar 2025 16:48:41 -0400 Subject: [PATCH 53/57] run test java 8 --- .github/workflows/java_sdk_logging.yaml | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/.github/workflows/java_sdk_logging.yaml b/.github/workflows/java_sdk_logging.yaml index 24a82cf9de..b7f8159e64 100644 --- a/.github/workflows/java_sdk_logging.yaml +++ b/.github/workflows/java_sdk_logging.yaml @@ -31,13 +31,28 @@ jobs: with: java-version: 8 distribution: temurin + - run: echo "JAVA8_HOME=${JAVA_HOME}" >> $GITHUB_ENV + - uses: actions/setup-java@v4 + with: + java-version: 17 + distribution: temurin - name: Install parent module run: | mvn install -B -ntp -pl gapic-generator-java-pom-parent - - name: Unit Tests + - name: Install logging module + run: | + mvn install -B -ntp -Dcheckstyle.skip -Dfmt.skip working-directory: java-sdk-logging + - name: Unit Tests in Java 8 run: | - mvn test -B -ntp -Dcheckstyle.skip -Dfmt.skip + set -x + export JAVA_HOME=$JAVA_HOME + export PATH=${JAVA_HOME}/bin:$PATH + mvn verify -B -ntp \ + -Dcheckstyle.skip \ + -Dfmt.skip \ + -Djvm="${JAVA8_HOME}/bin/java" + working-directory: java-sdk-logging module-lint: runs-on: ubuntu-latest steps: @@ -59,7 +74,7 @@ jobs: - uses: actions/checkout@v4 - uses: actions/setup-java@v4 with: - java-version: 11 + java-version: 17 distribution: temurin - name: Install parent module run: | @@ -74,7 +89,7 @@ jobs: - uses: actions/checkout@v4 - uses: actions/setup-java@v4 with: - java-version: 11 + java-version: 17 distribution: temurin - name: Install parent module run: | From 179ecc8f1a1aac401a09da3144ef8c6ab056af28 Mon Sep 17 00:00:00 2001 From: Joe Wang Date: Tue, 18 Mar 2025 16:57:28 -0400 Subject: [PATCH 54/57] final --- .../google/api/logging/SDKLoggingMdcJsonProviderTest.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/java-sdk-logging/logback-extension/src/test/java/com/google/api/logging/SDKLoggingMdcJsonProviderTest.java b/java-sdk-logging/logback-extension/src/test/java/com/google/api/logging/SDKLoggingMdcJsonProviderTest.java index 8b080b90df..75daa03b07 100644 --- a/java-sdk-logging/logback-extension/src/test/java/com/google/api/logging/SDKLoggingMdcJsonProviderTest.java +++ b/java-sdk-logging/logback-extension/src/test/java/com/google/api/logging/SDKLoggingMdcJsonProviderTest.java @@ -55,9 +55,9 @@ class SDKLoggingMdcJsonProviderTest { - private SDKLoggingMdcJsonProvider provider = new SDKLoggingMdcJsonProvider(); - private JsonGenerator generator = mock(JsonGenerator.class); - private ILoggingEvent event = mock(ILoggingEvent.class); + private final SDKLoggingMdcJsonProvider provider = new SDKLoggingMdcJsonProvider(); + private final JsonGenerator generator = mock(JsonGenerator.class); + private final ILoggingEvent event = mock(ILoggingEvent.class); private Map mdc; @BeforeEach From eea89ae6da0cd4111b1bf2d1299378afaef3104a Mon Sep 17 00:00:00 2001 From: Joe Wang Date: Wed, 19 Mar 2025 10:08:55 -0400 Subject: [PATCH 55/57] change package name --- .../{api => cloud/sdk}/logging/SDKLoggingMdcJsonProvider.java | 2 +- .../sdk}/logging/SDKLoggingMdcJsonProviderTest.java | 2 +- .../com/google/showcase/v1beta1/it/logging/TestMdcAppender.java | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) rename java-sdk-logging/logback-extension/src/main/java/com/google/{api => cloud/sdk}/logging/SDKLoggingMdcJsonProvider.java (99%) rename java-sdk-logging/logback-extension/src/test/java/com/google/{api => cloud/sdk}/logging/SDKLoggingMdcJsonProviderTest.java (99%) diff --git a/java-sdk-logging/logback-extension/src/main/java/com/google/api/logging/SDKLoggingMdcJsonProvider.java b/java-sdk-logging/logback-extension/src/main/java/com/google/cloud/sdk/logging/SDKLoggingMdcJsonProvider.java similarity index 99% rename from java-sdk-logging/logback-extension/src/main/java/com/google/api/logging/SDKLoggingMdcJsonProvider.java rename to java-sdk-logging/logback-extension/src/main/java/com/google/cloud/sdk/logging/SDKLoggingMdcJsonProvider.java index 4397b9db88..e4f09a4fce 100644 --- a/java-sdk-logging/logback-extension/src/main/java/com/google/api/logging/SDKLoggingMdcJsonProvider.java +++ b/java-sdk-logging/logback-extension/src/main/java/com/google/cloud/sdk/logging/SDKLoggingMdcJsonProvider.java @@ -28,7 +28,7 @@ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -package com.google.api.logging; +package com.google.cloud.sdk.logging; import ch.qos.logback.classic.spi.ILoggingEvent; import com.fasterxml.jackson.core.JsonGenerator; diff --git a/java-sdk-logging/logback-extension/src/test/java/com/google/api/logging/SDKLoggingMdcJsonProviderTest.java b/java-sdk-logging/logback-extension/src/test/java/com/google/cloud/sdk/logging/SDKLoggingMdcJsonProviderTest.java similarity index 99% rename from java-sdk-logging/logback-extension/src/test/java/com/google/api/logging/SDKLoggingMdcJsonProviderTest.java rename to java-sdk-logging/logback-extension/src/test/java/com/google/cloud/sdk/logging/SDKLoggingMdcJsonProviderTest.java index 75daa03b07..35ebbb829c 100644 --- a/java-sdk-logging/logback-extension/src/test/java/com/google/api/logging/SDKLoggingMdcJsonProviderTest.java +++ b/java-sdk-logging/logback-extension/src/test/java/com/google/cloud/sdk/logging/SDKLoggingMdcJsonProviderTest.java @@ -28,7 +28,7 @@ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -package com.google.api.logging; +package com.google.cloud.sdk.logging; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyString; diff --git a/java-showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/it/logging/TestMdcAppender.java b/java-showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/it/logging/TestMdcAppender.java index 5fa1b06ea3..460b801129 100644 --- a/java-showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/it/logging/TestMdcAppender.java +++ b/java-showcase/gapic-showcase/src/test/java/com/google/showcase/v1beta1/it/logging/TestMdcAppender.java @@ -2,7 +2,7 @@ import ch.qos.logback.classic.spi.ILoggingEvent; import ch.qos.logback.core.AppenderBase; -import com.google.api.logging.SDKLoggingMdcJsonProvider; +import com.google.cloud.sdk.logging.SDKLoggingMdcJsonProvider; import java.util.ArrayList; import java.util.Collections; import java.util.List; From af933063492db1a583afbbdc3ee9ad9684c9aa5b Mon Sep 17 00:00:00 2001 From: Joe Wang Date: Wed, 19 Mar 2025 10:23:42 -0400 Subject: [PATCH 56/57] refactor --- .../cloud/sdk/logging/SDKLoggingMdcJsonProvider.java | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/java-sdk-logging/logback-extension/src/main/java/com/google/cloud/sdk/logging/SDKLoggingMdcJsonProvider.java b/java-sdk-logging/logback-extension/src/main/java/com/google/cloud/sdk/logging/SDKLoggingMdcJsonProvider.java index e4f09a4fce..8455af10d2 100644 --- a/java-sdk-logging/logback-extension/src/main/java/com/google/cloud/sdk/logging/SDKLoggingMdcJsonProvider.java +++ b/java-sdk-logging/logback-extension/src/main/java/com/google/cloud/sdk/logging/SDKLoggingMdcJsonProvider.java @@ -56,12 +56,15 @@ public void writeTo(JsonGenerator generator, ILoggingEvent event) throws IOExcep String entryValueString = entry.getValue(); // an entry will be skipped if one of the scenario happens: // 1. key or value is null + if (fieldName == null || entryValueString == null) { + continue; + } // 2. includeMdcKeyNames is not empty and the key is not in the list + if (!getIncludeMdcKeyNames().isEmpty() && !getIncludeMdcKeyNames().contains(fieldName)) { + continue; + } // 3. excludeMdcKeyNames is not empty and the key is in the list - if (fieldName == null - || entryValueString == null - || !(getIncludeMdcKeyNames().isEmpty() || getIncludeMdcKeyNames().contains(fieldName)) - || (!getExcludeMdcKeyNames().isEmpty() && getExcludeMdcKeyNames().contains(fieldName))) { + if (!getExcludeMdcKeyNames().isEmpty() && getExcludeMdcKeyNames().contains(fieldName)) { continue; } From 5898bd11507447f357f52b41e0958e75c4aa22d2 Mon Sep 17 00:00:00 2001 From: Joe Wang Date: Wed, 19 Mar 2025 10:26:36 -0400 Subject: [PATCH 57/57] add comment --- java-sdk-logging/logback-extension/pom.xml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/java-sdk-logging/logback-extension/pom.xml b/java-sdk-logging/logback-extension/pom.xml index 64b1a8958b..e4da6edfe7 100644 --- a/java-sdk-logging/logback-extension/pom.xml +++ b/java-sdk-logging/logback-extension/pom.xml @@ -14,6 +14,8 @@ UTF-8 1.2.13 + 7.3