From 46f7f6abed4008c2cdaa8a5f0844752cae7e1c4d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 9 Apr 2025 10:41:57 +0000 Subject: [PATCH 1/6] Bump org.apache.logging:logging-parent from 12.0.0 to 12.1.0 Bumps [org.apache.logging:logging-parent](https://github.com/apache/logging-parent) from 12.0.0 to 12.1.0. - [Release notes](https://github.com/apache/logging-parent/releases) - [Commits](https://github.com/apache/logging-parent/compare/rel/12.0.0...rel/12.1.0) --- updated-dependencies: - dependency-name: org.apache.logging:logging-parent dependency-version: 12.1.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 008284d8dea..a9f9e07e1b8 100644 --- a/pom.xml +++ b/pom.xml @@ -31,7 +31,7 @@ org.apache.logging logging-parent - 12.0.0 + 12.1.0 From 572d67f59b6c63a6beff767f7159fee6ac1916ab Mon Sep 17 00:00:00 2001 From: "Piotr P. Karwasz" Date: Wed, 9 Apr 2025 13:31:42 +0200 Subject: [PATCH 2/6] style: reformat after `palantir-java-format` upgrade --- .../log4j/core/filter/MutableThreadContextMapFilter.java | 6 +++--- .../org/apache/logging/log4j/core/time/ClockFactory.java | 9 ++++----- .../internal/instant/InstantPatternDynamicFormatter.java | 6 +++--- .../util/internal/instant/InstantPatternFormatter.java | 6 +++--- 4 files changed, 13 insertions(+), 14 deletions(-) diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/MutableThreadContextMapFilter.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/MutableThreadContextMapFilter.java index f694a19b6fd..c991748621e 100644 --- a/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/MutableThreadContextMapFilter.java +++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/MutableThreadContextMapFilter.java @@ -401,8 +401,8 @@ public void run() { break; } switch (result.status) { - // These results cause changes in the filter - // We call the listeners + // These results cause changes in the filter + // We call the listeners case SUCCESS: case NOT_FOUND: case EMPTY: @@ -410,7 +410,7 @@ public void run() { listener.onEvent(); } break; - // These results do no cause changes in the filter + // These results do no cause changes in the filter case ERROR: case NOT_MODIFIED: break; diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/time/ClockFactory.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/time/ClockFactory.java index 2bcb5f63db1..7eb38bfc62a 100644 --- a/log4j-core/src/main/java/org/apache/logging/log4j/core/time/ClockFactory.java +++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/time/ClockFactory.java @@ -78,11 +78,10 @@ public Clock clock(final PropertyEnvironment environment) { } return switch (configuration.clock()) { case "SystemMillisClock" -> logSupportedPrecision(new SystemMillisClock()); - case "CachedClock", "org.apache.logging.log4j.core.time.internal.CachedClock" -> logSupportedPrecision( - CachedClock.instance()); - case "CoarseCachedClock", - "org.apache.logging.log4j.core.time.internal.CoarseCachedClock" -> logSupportedPrecision( - CoarseCachedClock.instance()); + case "CachedClock", "org.apache.logging.log4j.core.time.internal.CachedClock" -> + logSupportedPrecision(CachedClock.instance()); + case "CoarseCachedClock", "org.apache.logging.log4j.core.time.internal.CoarseCachedClock" -> + logSupportedPrecision(CoarseCachedClock.instance()); default -> logSupportedPrecision(new SystemClock()); }; } diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/util/internal/instant/InstantPatternDynamicFormatter.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/util/internal/instant/InstantPatternDynamicFormatter.java index 9c93dd34066..a5486f7a500 100644 --- a/log4j-core/src/main/java/org/apache/logging/log4j/core/util/internal/instant/InstantPatternDynamicFormatter.java +++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/util/internal/instant/InstantPatternDynamicFormatter.java @@ -189,7 +189,7 @@ public void formatTo(final StringBuilder buffer, final Instant instant) { switch (formatters.size()) { - // If found an empty pattern, return an empty formatter + // If found an empty pattern, return an empty formatter case 0: return new AbstractFormatter(pattern, locale, timeZone, ChronoUnit.FOREVER) { @Override @@ -198,11 +198,11 @@ public void formatTo(final StringBuilder buffer, final Instant instant) { } }; - // If extracted a single formatter, return it as is + // If extracted a single formatter, return it as is case 1: return formatters.get(0); - // Combine all extracted formatters into one + // Combine all extracted formatters into one default: final ChronoUnit precision = new CompositePatternSequence(sequences).precision; return new AbstractFormatter(pattern, locale, timeZone, precision) { diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/util/internal/instant/InstantPatternFormatter.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/util/internal/instant/InstantPatternFormatter.java index 037e79a0097..61056e3ccb2 100644 --- a/log4j-core/src/main/java/org/apache/logging/log4j/core/util/internal/instant/InstantPatternFormatter.java +++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/util/internal/instant/InstantPatternFormatter.java @@ -117,16 +117,16 @@ public InstantPatternFormatter build() { // Wrap the formatter with caching, if necessary switch (formatter.getPrecision()) { - // It is not worth caching when a precision equal to or higher than microsecond is requested + // It is not worth caching when a precision equal to or higher than microsecond is requested case NANOS: case MICROS: return formatter; - // Millisecond precision cache + // Millisecond precision cache case MILLIS: return InstantPatternThreadLocalCachedFormatter.ofMilliPrecision(formatter); - // Cache everything else with second precision + // Cache everything else with second precision default: return InstantPatternThreadLocalCachedFormatter.ofSecondPrecision(formatter); } From 00704df789a09e8cb39b2ec44d0069c76f5d780e Mon Sep 17 00:00:00 2001 From: "Piotr P. Karwasz" Date: Wed, 9 Apr 2025 13:32:19 +0200 Subject: [PATCH 3/6] fix: remove Error Prone overrides --- log4j-parent/pom.xml | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/log4j-parent/pom.xml b/log4j-parent/pom.xml index 97ccca32cd8..8f6ff04eb66 100644 --- a/log4j-parent/pom.xml +++ b/log4j-parent/pom.xml @@ -659,16 +659,6 @@ - - org.apache.maven.plugins - maven-compiler-plugin - - - --should-stop=ifError=FLOW - - - - From 696f15e2223add69f5937a7ce8838cbfc5889e61 Mon Sep 17 00:00:00 2001 From: "Piotr P. Karwasz" Date: Wed, 9 Apr 2025 13:33:45 +0200 Subject: [PATCH 4/6] chore: upgrade workflows to `logging-parent` version `12.1.0` --- .github/workflows/build.yaml | 8 ++++---- .github/workflows/codeql-analysis.yaml | 2 +- .github/workflows/deploy-site.yaml | 6 +++--- .github/workflows/merge-dependabot.yaml | 4 ++-- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 2e53eb56189..41298c950eb 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -30,7 +30,7 @@ jobs: build: if: github.actor != 'dependabot[bot]' - uses: apache/logging-parent/.github/workflows/build-reusable.yaml@rel/12.0.0 + uses: apache/logging-parent/.github/workflows/build-reusable.yaml@rel/12.1.0 secrets: DV_ACCESS_TOKEN: ${{ startsWith(github.ref_name, 'release/') && '' || secrets.GE_ACCESS_TOKEN }} with: @@ -41,7 +41,7 @@ jobs: deploy-snapshot: needs: build if: github.repository == 'apache/logging-log4j2' && github.ref_name == 'main' - uses: apache/logging-parent/.github/workflows/deploy-snapshot-reusable.yaml@rel/12.0.0 + uses: apache/logging-parent/.github/workflows/deploy-snapshot-reusable.yaml@rel/12.1.0 # Secrets for deployments secrets: NEXUS_USERNAME: ${{ secrets.NEXUS_USER }} @@ -50,7 +50,7 @@ jobs: deploy-release: needs: build if: github.repository == 'apache/logging-log4j2' && startsWith(github.ref_name, 'release/') - uses: apache/logging-parent/.github/workflows/deploy-release-reusable.yaml@rel/12.0.0 + uses: apache/logging-parent/.github/workflows/deploy-release-reusable.yaml@rel/12.1.0 # Secrets for deployments secrets: GPG_SECRET_KEY: ${{ secrets.LOGGING_GPG_SECRET_KEY }} @@ -68,7 +68,7 @@ jobs: needs: [ deploy-snapshot, deploy-release ] if: ${{ always() && (needs.deploy-snapshot.result == 'success' || needs.deploy-release.result == 'success') }} name: "verify-reproducibility (${{ needs.deploy-release.result == 'success' && needs.deploy-release.outputs.project-version || needs.deploy-snapshot.outputs.project-version }})" - uses: apache/logging-parent/.github/workflows/verify-reproducibility-reusable.yaml@rel/12.0.0 + uses: apache/logging-parent/.github/workflows/verify-reproducibility-reusable.yaml@rel/12.1.0 with: nexus-url: ${{ needs.deploy-release.result == 'success' && needs.deploy-release.outputs.nexus-url || 'https://repository.apache.org/content/groups/snapshots' }} # Encode the `runs-on` input as JSON array diff --git a/.github/workflows/codeql-analysis.yaml b/.github/workflows/codeql-analysis.yaml index 02e71a5223f..91257f2a02e 100644 --- a/.github/workflows/codeql-analysis.yaml +++ b/.github/workflows/codeql-analysis.yaml @@ -30,7 +30,7 @@ permissions: read-all jobs: analyze: - uses: apache/logging-parent/.github/workflows/codeql-analysis-reusable.yaml@rel/12.0.0 + uses: apache/logging-parent/.github/workflows/codeql-analysis-reusable.yaml@rel/12.1.0 with: java-version: 17 # Permissions required to publish Security Alerts diff --git a/.github/workflows/deploy-site.yaml b/.github/workflows/deploy-site.yaml index 518dde66fb6..e4417f9f529 100644 --- a/.github/workflows/deploy-site.yaml +++ b/.github/workflows/deploy-site.yaml @@ -33,7 +33,7 @@ jobs: deploy-site-stg: if: github.repository == 'apache/logging-log4j2' && github.ref_name == 'main' - uses: apache/logging-parent/.github/workflows/deploy-site-reusable.yaml@rel/12.0.0 + uses: apache/logging-parent/.github/workflows/deploy-site-reusable.yaml@rel/12.1.0 # Secrets for committing the generated site secrets: GPG_SECRET_KEY: ${{ secrets.LOGGING_GPG_SECRET_KEY }} @@ -51,7 +51,7 @@ jobs: deploy-site-pro: if: github.repository == 'apache/logging-log4j2' && github.ref_name == 'main-site-pro' - uses: apache/logging-parent/.github/workflows/deploy-site-reusable.yaml@rel/12.0.0 + uses: apache/logging-parent/.github/workflows/deploy-site-reusable.yaml@rel/12.1.0 # Secrets for committing the generated site secrets: GPG_SECRET_KEY: ${{ secrets.LOGGING_GPG_SECRET_KEY }} @@ -81,7 +81,7 @@ jobs: deploy-site-rel: needs: export-version - uses: apache/logging-parent/.github/workflows/deploy-site-reusable.yaml@rel/12.0.0 + uses: apache/logging-parent/.github/workflows/deploy-site-reusable.yaml@rel/12.1.0 # Secrets for committing the generated site secrets: GPG_SECRET_KEY: ${{ secrets.LOGGING_GPG_SECRET_KEY }} diff --git a/.github/workflows/merge-dependabot.yaml b/.github/workflows/merge-dependabot.yaml index 78b626f4306..b4ebee85727 100644 --- a/.github/workflows/merge-dependabot.yaml +++ b/.github/workflows/merge-dependabot.yaml @@ -30,7 +30,7 @@ jobs: build: if: github.repository == 'apache/logging-log4j2' && github.event_name == 'pull_request_target' && github.actor == 'dependabot[bot]' - uses: apache/logging-parent/.github/workflows/build-reusable.yaml@rel/12.0.0 + uses: apache/logging-parent/.github/workflows/build-reusable.yaml@rel/12.1.0 secrets: DV_ACCESS_TOKEN: ${{ secrets.GE_ACCESS_TOKEN }} with: @@ -39,7 +39,7 @@ jobs: merge-dependabot: needs: build - uses: apache/logging-parent/.github/workflows/merge-dependabot-reusable.yaml@rel/12.0.0 + uses: apache/logging-parent/.github/workflows/merge-dependabot-reusable.yaml@rel/12.1.0 permissions: contents: write # to push changelog commits pull-requests: write # to close the PR From cfd3665fc1ef860cc5b34a9fc772f85742887e33 Mon Sep 17 00:00:00 2001 From: "Piotr P. Karwasz" Date: Tue, 15 Apr 2025 09:45:50 +0200 Subject: [PATCH 5/6] Fix `SEI MET07-J` violations (#3602) * Fix `SEI MET07-J` violations This change: - Deprecates public/protected hiding methods. - Removes package-private hiding methods. - For legacy modules that will disappear in 3.x, just suppresses the warning. Closes #3601 * Try skipping required checks skip-checks: true --- .../org/apache/logging/log4j/core/lookup/MainMapLookup.java | 4 ++++ .../layout/template/json/resolver/ExceptionResolver.java | 4 ---- .../template/json/resolver/ExceptionResolverFactory.java | 2 +- .../template/json/resolver/ExceptionRootCauseResolver.java | 4 ---- .../json/resolver/ExceptionRootCauseResolverFactory.java | 2 +- 5 files changed, 6 insertions(+), 10 deletions(-) diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/lookup/MainMapLookup.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/lookup/MainMapLookup.java index c80e72def5b..a8d3b0397df 100644 --- a/log4j-core/src/main/java/org/apache/logging/log4j/core/lookup/MainMapLookup.java +++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/lookup/MainMapLookup.java @@ -16,6 +16,7 @@ */ package org.apache.logging.log4j.core.lookup; +import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; import java.util.Map; import org.apache.logging.log4j.core.LogEvent; import org.apache.logging.log4j.plugins.Plugin; @@ -75,6 +76,9 @@ public MainMapLookup(final Map map) { * @param args * An application's {@code public static main(String[])} arguments. */ + @SuppressFBWarnings( + value = "HSM_HIDING_METHOD", + justification = "The MapLookup.setMainArguments() method hidden by this one is deprecated.") public static void setMainArguments(final String... args) { if (args == null) { return; diff --git a/log4j-layout-template-json/src/main/java/org/apache/logging/log4j/layout/template/json/resolver/ExceptionResolver.java b/log4j-layout-template-json/src/main/java/org/apache/logging/log4j/layout/template/json/resolver/ExceptionResolver.java index 6256673aa73..cda28305080 100644 --- a/log4j-layout-template-json/src/main/java/org/apache/logging/log4j/layout/template/json/resolver/ExceptionResolver.java +++ b/log4j-layout-template-json/src/main/java/org/apache/logging/log4j/layout/template/json/resolver/ExceptionResolver.java @@ -388,10 +388,6 @@ Throwable extractThrowable(final LogEvent logEvent) { return logEvent.getThrown(); } - static String getName() { - return "exception"; - } - @Override public boolean isResolvable() { return stackTraceEnabled; diff --git a/log4j-layout-template-json/src/main/java/org/apache/logging/log4j/layout/template/json/resolver/ExceptionResolverFactory.java b/log4j-layout-template-json/src/main/java/org/apache/logging/log4j/layout/template/json/resolver/ExceptionResolverFactory.java index 1e330ba73e8..0dc840b8014 100644 --- a/log4j-layout-template-json/src/main/java/org/apache/logging/log4j/layout/template/json/resolver/ExceptionResolverFactory.java +++ b/log4j-layout-template-json/src/main/java/org/apache/logging/log4j/layout/template/json/resolver/ExceptionResolverFactory.java @@ -38,7 +38,7 @@ public static ExceptionResolverFactory getInstance() { @Override public String getName() { - return ExceptionResolver.getName(); + return "exception"; } @Override diff --git a/log4j-layout-template-json/src/main/java/org/apache/logging/log4j/layout/template/json/resolver/ExceptionRootCauseResolver.java b/log4j-layout-template-json/src/main/java/org/apache/logging/log4j/layout/template/json/resolver/ExceptionRootCauseResolver.java index bd42ba9c810..91de00eb856 100644 --- a/log4j-layout-template-json/src/main/java/org/apache/logging/log4j/layout/template/json/resolver/ExceptionRootCauseResolver.java +++ b/log4j-layout-template-json/src/main/java/org/apache/logging/log4j/layout/template/json/resolver/ExceptionRootCauseResolver.java @@ -36,10 +36,6 @@ public final class ExceptionRootCauseResolver extends ExceptionResolver { super(context, config); } - static String getName() { - return "exceptionRootCause"; - } - @Override Throwable extractThrowable(final LogEvent logEvent) { final Throwable thrown = logEvent.getThrown(); diff --git a/log4j-layout-template-json/src/main/java/org/apache/logging/log4j/layout/template/json/resolver/ExceptionRootCauseResolverFactory.java b/log4j-layout-template-json/src/main/java/org/apache/logging/log4j/layout/template/json/resolver/ExceptionRootCauseResolverFactory.java index b42125fc864..8028d4f63e0 100644 --- a/log4j-layout-template-json/src/main/java/org/apache/logging/log4j/layout/template/json/resolver/ExceptionRootCauseResolverFactory.java +++ b/log4j-layout-template-json/src/main/java/org/apache/logging/log4j/layout/template/json/resolver/ExceptionRootCauseResolverFactory.java @@ -38,7 +38,7 @@ public static ExceptionRootCauseResolverFactory getInstance() { @Override public String getName() { - return ExceptionRootCauseResolver.getName(); + return "exceptionRootCause"; } @Override From adc9a9be36b554b049f50e1b4695c402a2e3e57e Mon Sep 17 00:00:00 2001 From: "Piotr P. Karwasz" Date: Thu, 17 Apr 2025 21:19:37 +0200 Subject: [PATCH 6/6] Fix compilation errors --- .../org/apache/logging/log4j/async/logger/AsyncLoggerConfig.java | 1 + 1 file changed, 1 insertion(+) diff --git a/log4j-async-logger/src/main/java/org/apache/logging/log4j/async/logger/AsyncLoggerConfig.java b/log4j-async-logger/src/main/java/org/apache/logging/log4j/async/logger/AsyncLoggerConfig.java index 338dbfc30f0..99b72de2547 100644 --- a/log4j-async-logger/src/main/java/org/apache/logging/log4j/async/logger/AsyncLoggerConfig.java +++ b/log4j-async-logger/src/main/java/org/apache/logging/log4j/async/logger/AsyncLoggerConfig.java @@ -120,6 +120,7 @@ public void initialize() { } @Override + @SuppressWarnings("BoxedPrimitiveEquality") protected void log(final LogEvent event, final Predicate predicate) { // See LOG4J2-2301 if (predicate == null