Skip to content

Commit bb8b41f

Browse files
committed
fix: hardcode legacy patterns
1 parent 41f4b1b commit bb8b41f

File tree

1 file changed

+14
-16
lines changed

1 file changed

+14
-16
lines changed

log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/NamedInstantPattern.java

Lines changed: 14 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@
1616
*/
1717
package org.apache.logging.log4j.core.pattern;
1818

19-
import java.util.regex.Pattern;
2019
import org.jspecify.annotations.NullMarked;
2120

2221
/**
@@ -29,9 +28,9 @@
2928
public enum NamedInstantPattern {
3029
ABSOLUTE("HH:mm:ss,SSS"),
3130

32-
ABSOLUTE_MICROS("HH:mm:ss,SSSSSS"),
31+
ABSOLUTE_MICROS("HH:mm:ss,SSSSSS", "HH:mm:ss,nnnnnn"),
3332

34-
ABSOLUTE_NANOS("HH:mm:ss,SSSSSSSSS"),
33+
ABSOLUTE_NANOS("HH:mm:ss,SSSSSSSSS", "HH:mm:ss,nnnnnnnnn"),
3534

3635
ABSOLUTE_PERIOD("HH:mm:ss.SSS"),
3736

@@ -43,9 +42,9 @@ public enum NamedInstantPattern {
4342

4443
DEFAULT("yyyy-MM-dd HH:mm:ss,SSS"),
4544

46-
DEFAULT_MICROS("yyyy-MM-dd HH:mm:ss,SSSSSS"),
45+
DEFAULT_MICROS("yyyy-MM-dd HH:mm:ss,SSSSSS", "yyyy-MM-dd HH:mm:ss,nnnnnn"),
4746

48-
DEFAULT_NANOS("yyyy-MM-dd HH:mm:ss,SSSSSSSSS"),
47+
DEFAULT_NANOS("yyyy-MM-dd HH:mm:ss,SSSSSSSSS", "yyyy-MM-dd HH:mm:ss,nnnnnnnnn"),
4948

5049
DEFAULT_PERIOD("yyyy-MM-dd HH:mm:ss.SSS"),
5150

@@ -55,26 +54,30 @@ public enum NamedInstantPattern {
5554

5655
ISO8601("yyyy-MM-dd'T'HH:mm:ss,SSS"),
5756

58-
ISO8601_OFFSET_DATE_TIME_HH("yyyy-MM-dd'T'HH:mm:ss,SSSx"),
57+
ISO8601_OFFSET_DATE_TIME_HH("yyyy-MM-dd'T'HH:mm:ss,SSSx", "yyyy-MM-dd'T'HH:mm:ss,SSSX"),
5958

60-
ISO8601_OFFSET_DATE_TIME_HHMM("yyyy-MM-dd'T'HH:mm:ss,SSSxx"),
59+
ISO8601_OFFSET_DATE_TIME_HHMM("yyyy-MM-dd'T'HH:mm:ss,SSSxx", "yyyy-MM-dd'T'HH:mm:ss,SSSXX"),
6160

62-
ISO8601_OFFSET_DATE_TIME_HHCMM("yyyy-MM-dd'T'HH:mm:ss,SSSxxx"),
61+
ISO8601_OFFSET_DATE_TIME_HHCMM("yyyy-MM-dd'T'HH:mm:ss,SSSxxx", "yyyy-MM-dd'T'HH:mm:ss,SSSXXX"),
6362

6463
ISO8601_PERIOD("yyyy-MM-dd'T'HH:mm:ss.SSS"),
6564

66-
ISO8601_PERIOD_MICROS("yyyy-MM-dd'T'HH:mm:ss.SSSSSS"),
65+
ISO8601_PERIOD_MICROS("yyyy-MM-dd'T'HH:mm:ss.SSSSSS", "yyyy-MM-dd'T'HH:mm:ss.nnnnnn"),
6766

6867
US_MONTH_DAY_YEAR2_TIME("dd/MM/yy HH:mm:ss.SSS"),
6968

7069
US_MONTH_DAY_YEAR4_TIME("dd/MM/yyyy HH:mm:ss.SSS");
7170

72-
private static final Pattern NANO_PATTERN = Pattern.compile("S{4,}");
73-
7471
private final String pattern;
72+
private final String legacyPattern;
7573

7674
NamedInstantPattern(String pattern) {
75+
this(pattern, pattern);
76+
}
77+
78+
NamedInstantPattern(String pattern, String legacyPattern) {
7779
this.pattern = pattern;
80+
this.legacyPattern = legacyPattern;
7881
}
7982

8083
/**
@@ -153,11 +156,6 @@ public String getPattern() {
153156
* {@link org.apache.logging.log4j.core.util.datetime.FixedDateFormat.FixedFormat}
154157
*/
155158
String getLegacyPattern() {
156-
String legacyPattern = pattern.replace('x', 'X');
157-
if (NANO_PATTERN.matcher(pattern).find()) {
158-
// If the pattern contains sub-millis, replace 'S' with 'n' for legacy formatters
159-
return legacyPattern.replace('S', 'n');
160-
}
161159
return legacyPattern;
162160
}
163161
}

0 commit comments

Comments
 (0)