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 2022/03/23 20:37:29 UTC
[logging-log4j2] branch release-2.x updated: [LOG4J2-3419] Allows %pid in Log4j 1.x patterns
This is an automated email from the ASF dual-hosted git repository.
pkarwasz pushed a commit to branch release-2.x
in repository https://gitbox.apache.org/repos/asf/logging-log4j2.git
The following commit(s) were added to refs/heads/release-2.x by this push:
new 798f302 [LOG4J2-3419] Allows %pid in Log4j 1.x patterns
798f302 is described below
commit 798f3026c2e086e732e6aac0744d0154da33bb39
Author: Piotr P. Karwasz <pi...@karwasz.org>
AuthorDate: Wed Mar 23 21:37:20 2022 +0100
[LOG4J2-3419] Allows %pid in Log4j 1.x patterns
Although `%pid` was never a valid Log4j 1.x pattern, it was supported in
the previous bridge versions.
This fixes a regression with respect to `log4j-1.2-api` version 2.17.2.
---
.../org/apache/log4j/builders/layout/PatternLayoutBuilder.java | 6 +++---
.../java/org/apache/log4j/config/Log4j1ConfigurationParser.java | 6 +++---
.../apache/log4j/builders/layout/PatternLayoutBuilderTest.java | 8 +++++++-
3 files changed, 13 insertions(+), 7 deletions(-)
diff --git a/log4j-1.2-api/src/main/java/org/apache/log4j/builders/layout/PatternLayoutBuilder.java b/log4j-1.2-api/src/main/java/org/apache/log4j/builders/layout/PatternLayoutBuilder.java
index 54e7545..1631b42 100644
--- a/log4j-1.2-api/src/main/java/org/apache/log4j/builders/layout/PatternLayoutBuilder.java
+++ b/log4j-1.2-api/src/main/java/org/apache/log4j/builders/layout/PatternLayoutBuilder.java
@@ -87,20 +87,20 @@ public class PatternLayoutBuilder extends AbstractBuilder<Layout> implements Lay
return LayoutWrapper.adapt(PatternLayout.newBuilder()
.withPattern(pattern
// Log4j 2 and Log4j 1 level names differ for custom levels
- .replaceAll("%([-\\.\\d]*)p", "%$1v1Level")
+ .replaceAll("%([-\\.\\d]*)p(?!\\w)", "%$1v1Level")
// Log4j 2's %x (NDC) is not compatible with Log4j 1's
// %x
// Log4j 1: "foo bar baz"
// Log4j 2: "[foo, bar, baz]"
// Use %ndc to get the Log4j 1 format
- .replaceAll("%([-\\.\\d]*)x", "%$1ndc")
+ .replaceAll("%([-\\.\\d]*)x(?!\\w)", "%$1ndc")
// Log4j 2's %X (MDC) is not compatible with Log4j 1's
// %X
// Log4j 1: "{{foo,bar}{hoo,boo}}"
// Log4j 2: "{foo=bar,hoo=boo}"
// Use %properties to get the Log4j 1 format
- .replaceAll("%([-\\.\\d]*)X", "%$1properties"))
+ .replaceAll("%([-\\.\\d]*)X(?!\\w)", "%$1properties"))
.withConfiguration(config)
.build());
}
diff --git a/log4j-1.2-api/src/main/java/org/apache/log4j/config/Log4j1ConfigurationParser.java b/log4j-1.2-api/src/main/java/org/apache/log4j/config/Log4j1ConfigurationParser.java
index f3c0dfa..be81024 100644
--- a/log4j-1.2-api/src/main/java/org/apache/log4j/config/Log4j1ConfigurationParser.java
+++ b/log4j-1.2-api/src/main/java/org/apache/log4j/config/Log4j1ConfigurationParser.java
@@ -298,20 +298,20 @@ public class Log4j1ConfigurationParser {
if (pattern != null) {
pattern = pattern
// Log4j 2 and Log4j 1 level names differ for custom levels
- .replaceAll("%([-\\.\\d]*)p", "%$1v1Level")
+ .replaceAll("%([-\\.\\d]*)p(?!\\w)", "%$1v1Level")
// Log4j 2's %x (NDC) is not compatible with Log4j 1's
// %x
// Log4j 1: "foo bar baz"
// Log4j 2: "[foo, bar, baz]"
// Use %ndc to get the Log4j 1 format
- .replaceAll("%([-\\.\\d]*)x", "%$1ndc")
+ .replaceAll("%([-\\.\\d]*)x(?!\\w)", "%$1ndc")
// Log4j 2's %X (MDC) is not compatible with Log4j 1's
// %X
// Log4j 1: "{{foo,bar}{hoo,boo}}"
// Log4j 2: "{foo=bar,hoo=boo}"
// Use %properties to get the Log4j 1 format
- .replaceAll("%([-\\.\\d]*)X", "%$1properties");
+ .replaceAll("%([-\\.\\d]*)X(?!\\w)", "%$1properties");
} else {
pattern = "%m%n";
}
diff --git a/log4j-1.2-api/src/test/java/org/apache/log4j/builders/layout/PatternLayoutBuilderTest.java b/log4j-1.2-api/src/test/java/org/apache/log4j/builders/layout/PatternLayoutBuilderTest.java
index 9a22389..e8a8280 100644
--- a/log4j-1.2-api/src/test/java/org/apache/log4j/builders/layout/PatternLayoutBuilderTest.java
+++ b/log4j-1.2-api/src/test/java/org/apache/log4j/builders/layout/PatternLayoutBuilderTest.java
@@ -37,7 +37,13 @@ public class PatternLayoutBuilderTest {
Arguments.of("%-100p", "%-100v1Level"),
Arguments.of("%x", "%ndc"),
Arguments.of("%X", "%properties"),
- Arguments.of("%.20x", "%.20ndc"))
+ Arguments.of("%.20x", "%.20ndc"),
+ Arguments.of("%pid", "%pid"),
+ Arguments.of("%xEx", "%xEx"),
+ Arguments.of("%XX", "%XX"),
+ Arguments.of("%p id", "%v1Level id"),
+ Arguments.of("%x Ex", "%ndc Ex"),
+ Arguments.of("%X X", "%properties X"))
.stream();
}