Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Migrate to Jackson 3
  • Loading branch information
philsttr committed Oct 13, 2025
commit 82ba746a9eb6b28c32dd8d6d155433cdbfc8210d
7 changes: 4 additions & 3 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -34,9 +34,10 @@ jobs:
- name: Build
run: ./mvnw --batch-mode --no-transfer-progress --show-version --settings .github/maven/settings.xml verify

# Run tests against Jackson 2.12 to ensure runtime compatibility (do not recompile)
- name: Test Jackson 2.12.x
run: ./mvnw --batch-mode --no-transfer-progress --show-version --settings .github/maven/settings.xml -Pcompat-jackson surefire:test
# Re-enable after upgrading Jackson to 3.1+
# # Run tests against Jackson 3.0.0 to ensure runtime compatibility (do not recompile)
# - name: Test Jackson 3.0.0
# run: ./mvnw --batch-mode --no-transfer-progress --show-version --settings .github/maven/settings.xml -Pcompat-jackson surefire:test

- name: Upload Test Reports to Github
uses: actions/upload-artifact@v4
Expand Down
1 change: 0 additions & 1 deletion .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@ jobs:
release:
name: release
runs-on: ubuntu-24.04
needs: [build]
if: github.repository == 'logfellow/logstash-logback-encoder' && github.ref == 'refs/heads/main'
steps:
- name: Checkout Code
Expand Down
258 changes: 142 additions & 116 deletions README.md

Large diffs are not rendered by default.

44 changes: 19 additions & 25 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

<!-- runtime dependencies -->
<jackson.version>2.20.0</jackson.version>
<jackson.version>3.0.0</jackson.version>
<java-uuid-generator.version>5.1.1</java-uuid-generator.version>
<logback-core.version>1.5.19</logback-core.version>
<logback-access.version>2.0.6</logback-access.version>
Expand Down Expand Up @@ -64,7 +64,10 @@

<!-- maven-javadoc-plugin configuration -->
<maven.javadoc.failOnError>true</maven.javadoc.failOnError>
<maven.javadoc.failOnWarnings>true</maven.javadoc.failOnWarnings>
<!-- A warning is emitted when javadoc is missing on a public/protected method.
Disable failure in this case until the code is fully documented.
-->
<maven.javadoc.failOnWarnings>false</maven.javadoc.failOnWarnings>

<!-- the server id the maven-release-plugin uses to obtain credentials to use when pushing tags/commits -->
<project.scm.id>github</project.scm.id>
Expand Down Expand Up @@ -116,7 +119,7 @@
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.fasterxml.jackson</groupId>
<groupId>tools.jackson</groupId>
<artifactId>jackson-bom</artifactId>
<version>${jackson.version}</version>
<type>pom</type>
Expand Down Expand Up @@ -165,27 +168,27 @@
<optional>true</optional>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<groupId>tools.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.dataformat</groupId>
<groupId>tools.jackson.dataformat</groupId>
<artifactId>jackson-dataformat-cbor</artifactId>
<!--
Only needed if net.logstash.logback.decorate.cbor is used.
-->
<optional>true</optional>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.dataformat</groupId>
<groupId>tools.jackson.dataformat</groupId>
<artifactId>jackson-dataformat-smile</artifactId>
<!--
Only needed if net.logstash.logback.decorate.smile is used.
-->
<optional>true</optional>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.dataformat</groupId>
<groupId>tools.jackson.dataformat</groupId>
<artifactId>jackson-dataformat-yaml</artifactId>
<!--
Only needed if net.logstash.logback.decorate.yaml is used.
Expand Down Expand Up @@ -270,7 +273,7 @@
higher than the minimum JDK version we support.
-->
<enforceBytecodeVersion>
<maxJdkVersion>11</maxJdkVersion>
<maxJdkVersion>17</maxJdkVersion>
<ignoreClasses>
<ignoreClass>META-INF/versions/*</ignoreClass>
</ignoreClasses>
Expand Down Expand Up @@ -548,8 +551,8 @@
<link>https://javadoc.io/doc/ch.qos.logback/logback-classic/${logback-core.version}</link>
<link>https://javadoc.io/doc/ch.qos.logback.access/logback-access-common/${logback-access.version}</link>

<link>https://javadoc.io/doc/com.fasterxml.jackson.core/jackson-core/${jackson.version}</link>
<link>https://javadoc.io/doc/com.fasterxml.jackson.core/jackson-databind/${jackson.version}</link>
<link>https://javadoc.io/doc/tools.jackson.core/jackson-core/${jackson.version}</link>
<link>https://javadoc.io/doc/tools.jackson.core/jackson-databind/${jackson.version}</link>
</links>

<!-- Explicitly set version. This should help to get rid of the following
Expand Down Expand Up @@ -682,19 +685,6 @@
</build>
</profile>

<profile>
<id>java15</id>
<activation>
<jdk>[1.15,)</jdk>
</activation>
<properties>
<!-- A warning is emitted when javadoc is missing on a public/protected method.
Temporarily disable failure in this case until the code is fully documented.
-->
<maven.javadoc.failOnWarnings>false</maven.javadoc.failOnWarnings>
</properties>
</profile>

<profile>
<id>github</id>
<activation>
Expand Down Expand Up @@ -777,15 +767,19 @@
</profile>

<!--
Profile used to run backward compatibility tests against jackson 2.12
Profile used to run backward compatibility tests against Jackson 3.0.0

Re-enable after upgrading Jackson to 3.1+
-->
<!--
<profile>
<id>compat-jackson</id>
<properties>
<jackson.version>2.12.7</jackson.version>
<jackson.version>3.0.0</jackson.version>
<surefire.reportsSubDir>jackson-${jackson.version}</surefire.reportsSubDir>
</properties>
</profile>
-->
</profiles>

</project>
15 changes: 7 additions & 8 deletions src/main/java/net/logstash/logback/LogstashAccessFormatter.java
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@
import ch.qos.logback.access.common.spi.IAccessEvent;
import ch.qos.logback.core.joran.spi.DefaultClass;
import ch.qos.logback.core.spi.ContextAware;
import com.fasterxml.jackson.databind.JsonNode;
import tools.jackson.databind.JsonNode;

/**
* A {@link AccessEventCompositeJsonFormatter} that contains a common
Expand Down Expand Up @@ -119,12 +119,11 @@ private void updateMessageProvider() {
//
// { "fieldName": "messagePattern" }
//
String accessEventPattern = new StringBuilder("{\"")
.append(this.fieldNames.getMessage())
.append("\": \"")
.append(escapeJson(this.messagePattern))
.append("\"}")
.toString();
String accessEventPattern = "{\""
+ this.fieldNames.getMessage()
+ "\": \""
+ escapeJson(this.messagePattern)
+ "\"}";

AccessEventPatternJsonProvider messagePatternProvider = new AccessEventPatternJsonProvider();
messagePatternProvider.setPattern(accessEventPattern);
Expand Down Expand Up @@ -184,7 +183,7 @@ public String getCustomFieldsAsString() {
}

public void setCustomFieldsFromString(String customFields) {
if (customFields == null || customFields.length() == 0) {
if (customFields == null || customFields.isEmpty()) {
getProviders().removeProvider(globalCustomFieldsProvider);
globalCustomFieldsProvider = null;
} else {
Expand Down
4 changes: 2 additions & 2 deletions src/main/java/net/logstash/logback/LogstashFormatter.java
Original file line number Diff line number Diff line change
Expand Up @@ -45,9 +45,9 @@
import ch.qos.logback.classic.pattern.ThrowableHandlingConverter;
import ch.qos.logback.classic.spi.ILoggingEvent;
import ch.qos.logback.core.spi.ContextAware;
import com.fasterxml.jackson.databind.JsonNode;
import org.slf4j.MDC;
import org.slf4j.event.KeyValuePair;
import tools.jackson.databind.JsonNode;

/**
* A {@link LoggingEventCompositeJsonFormatter} that contains a common
Expand Down Expand Up @@ -176,7 +176,7 @@ public String getCustomFieldsAsString() {
}

public void setCustomFieldsFromString(String customFields) {
if (customFields == null || customFields.length() == 0) {
if (customFields == null || customFields.isEmpty()) {
getProviders().removeProvider(globalCustomFieldsProvider);
globalCustomFieldsProvider = null;
} else {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,15 +15,14 @@
*/
package net.logstash.logback.argument;

import java.io.IOException;
import java.util.Objects;
import java.util.function.Supplier;

import net.logstash.logback.marker.EmptyLogstashMarker;

import ch.qos.logback.classic.spi.LoggingEvent;
import com.fasterxml.jackson.core.JsonGenerator;
import org.slf4j.Logger;
import tools.jackson.core.JsonGenerator;

/**
* A {@link StructuredArgument} that defers the creation of another {@link StructuredArgument} until
Expand Down Expand Up @@ -66,7 +65,7 @@ public DeferredStructuredArgument(Supplier<? extends StructuredArgument> structu
}

@Override
public void writeTo(JsonGenerator generator) throws IOException {
public void writeTo(JsonGenerator generator) {
getSuppliedValue().writeTo(generator);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,12 +15,10 @@
*/
package net.logstash.logback.argument;

import java.io.IOException;

import net.logstash.logback.composite.loggingevent.ArgumentsJsonProvider;

import com.fasterxml.jackson.core.JsonGenerator;
import org.slf4j.Logger;
import tools.jackson.core.JsonGenerator;

/**
* A wrapper for an argument passed to a log method (e.g. {@link Logger#info(String, Object...)})
Expand All @@ -32,9 +30,8 @@ public interface StructuredArgument {
* Writes the data associated with this argument to the given {@link JsonGenerator}.
*
* @param generator the {@link JsonGenerator} to produce JSON content
* @throws IOException if an I/O error occurs
*/
void writeTo(JsonGenerator generator) throws IOException;
void writeTo(JsonGenerator generator);

/**
* Writes the data associated with this argument to a {@link String} to be
Expand Down
Loading
Loading