This is an automated email from the ASF dual-hosted git repository.

pkarwasz pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/logging-log4j-transform.git


The following commit(s) were added to refs/heads/main by this push:
     new 409760c  Add trailing newlines and emit formatted JSON (#216)
409760c is described below

commit 409760ce2bde1af858e7df2685009f1fac5589a5
Author: Ryan Schmitt <rschm...@pobox.com>
AuthorDate: Thu Aug 7 12:26:04 2025 -0700

    Add trailing newlines and emit formatted JSON (#216)
---
 .../config/internal/v2/AbstractJacksonConfigurationMapper.java   | 2 ++
 .../converter/config/internal/v2/JsonConfigurationMapper.java    | 9 ++++++++-
 .../converter/config/internal/v2/XmlConfigurationMapper.java     | 1 +
 .../logging/converter/config/ConfigurationConverterTest.java     | 4 +++-
 4 files changed, 14 insertions(+), 2 deletions(-)

diff --git 
a/log4j-converter-config/src/main/java/org/apache/logging/converter/config/internal/v2/AbstractJacksonConfigurationMapper.java
 
b/log4j-converter-config/src/main/java/org/apache/logging/converter/config/internal/v2/AbstractJacksonConfigurationMapper.java
index dd4b488..a75d7a4 100644
--- 
a/log4j-converter-config/src/main/java/org/apache/logging/converter/config/internal/v2/AbstractJacksonConfigurationMapper.java
+++ 
b/log4j-converter-config/src/main/java/org/apache/logging/converter/config/internal/v2/AbstractJacksonConfigurationMapper.java
@@ -73,6 +73,8 @@ public abstract class AbstractJacksonConfigurationMapper 
implements Configuratio
                 ? nodeFactory.objectNode().set(configuration.getPluginName(), 
configurationNode)
                 : configurationNode;
         mapper.writeValue(outputStream, documentNode);
+        outputStream.write('\n');
+        outputStream.close();
     }
 
     private static ConfigurationNode parseObjectNode(ObjectNode objectNode, 
String fieldName) {
diff --git 
a/log4j-converter-config/src/main/java/org/apache/logging/converter/config/internal/v2/JsonConfigurationMapper.java
 
b/log4j-converter-config/src/main/java/org/apache/logging/converter/config/internal/v2/JsonConfigurationMapper.java
index 8eed7c0..2f03437 100644
--- 
a/log4j-converter-config/src/main/java/org/apache/logging/converter/config/internal/v2/JsonConfigurationMapper.java
+++ 
b/log4j-converter-config/src/main/java/org/apache/logging/converter/config/internal/v2/JsonConfigurationMapper.java
@@ -18,6 +18,8 @@ package org.apache.logging.converter.config.internal.v2;
 
 import aQute.bnd.annotation.Resolution;
 import aQute.bnd.annotation.spi.ServiceProvider;
+import com.fasterxml.jackson.core.JsonGenerator;
+import com.fasterxml.jackson.databind.SerializationFeature;
 import com.fasterxml.jackson.databind.json.JsonMapper;
 import org.apache.logging.converter.config.spi.ConfigurationMapper;
 
@@ -27,7 +29,12 @@ public class JsonConfigurationMapper extends 
AbstractJacksonConfigurationMapper
     private static final String LOG4J_V2_JSON_FORMAT = "v2:json";
 
     public JsonConfigurationMapper() {
-        super(JsonMapper.builder().build(), true);
+        super(
+                JsonMapper.builder()
+                        .enable(SerializationFeature.INDENT_OUTPUT)
+                        .disable(JsonGenerator.Feature.AUTO_CLOSE_TARGET)
+                        .build(),
+                true);
     }
 
     @Override
diff --git 
a/log4j-converter-config/src/main/java/org/apache/logging/converter/config/internal/v2/XmlConfigurationMapper.java
 
b/log4j-converter-config/src/main/java/org/apache/logging/converter/config/internal/v2/XmlConfigurationMapper.java
index 077c944..f17a7bf 100644
--- 
a/log4j-converter-config/src/main/java/org/apache/logging/converter/config/internal/v2/XmlConfigurationMapper.java
+++ 
b/log4j-converter-config/src/main/java/org/apache/logging/converter/config/internal/v2/XmlConfigurationMapper.java
@@ -88,6 +88,7 @@ public class XmlConfigurationMapper implements 
ConfigurationMapper {
             streamWriter.writeEndElement();
             streamWriter.writeEndDocument();
             streamWriter.flush();
+            streamWriter.writeCharacters("\n");
         } catch (XMLStreamException e) {
             throw new IOException("Unable to write configuration.", e);
         } finally {
diff --git 
a/log4j-converter-config/src/test/java/org/apache/logging/converter/config/ConfigurationConverterTest.java
 
b/log4j-converter-config/src/test/java/org/apache/logging/converter/config/ConfigurationConverterTest.java
index eadf189..b0bdca8 100644
--- 
a/log4j-converter-config/src/test/java/org/apache/logging/converter/config/ConfigurationConverterTest.java
+++ 
b/log4j-converter-config/src/test/java/org/apache/logging/converter/config/ConfigurationConverterTest.java
@@ -59,8 +59,10 @@ class ConfigurationConverterTest {
             ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
             converter.convert(Objects.requireNonNull(inputStream), 
inputFormat, outputStream, DEFAULT_FORMAT);
             // Parse the result and check if it matches
-            ConfigurationNode actual = parser.parse(new 
ByteArrayInputStream(outputStream.toByteArray()));
+            byte[] outputBytes = outputStream.toByteArray();
+            ConfigurationNode actual = parser.parse(new 
ByteArrayInputStream(outputBytes));
             
assertThat(actual).ignoringOrder().isEqualTo(EXAMPLE_V2_CONFIGURATION);
+            assertThat(new String(outputBytes)).endsWith("\n");
         }
     }
 

Reply via email to