You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@logging.apache.org by pk...@apache.org on 2025/08/07 19:26:10 UTC
(logging-log4j-transform) branch main updated: Add trailing newlines and emit formatted JSON (#216)
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 <rs...@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");
}
}