ppkarwasz commented on code in PR #3338:
URL: https://github.com/apache/logging-log4j2/pull/3338#discussion_r1898980627
##########
log4j-core/src/main/java/org/apache/logging/log4j/core/util/internal/instant/InstantPatternDynamicFormatter.java:
##########
@@ -806,26 +674,114 @@ private static String removePadding(final String
content) {
}
}
- static final class CompositePatternSequence extends PatternSequence {
+ static class SecondPatternFormatterFactory extends PatternFormatterFactory
{
+
+ private final boolean printSeconds;
+ private final String separator;
+ private final int fractionalDigits;
+
+ SecondPatternFormatterFactory(boolean printSeconds, String separator,
int fractionalDigits) {
+ super(
+ createPattern(printSeconds, separator, fractionalDigits),
+ determinePrecision(printSeconds, fractionalDigits));
+ this.printSeconds = printSeconds;
+ this.separator = separator;
+ this.fractionalDigits = fractionalDigits;
+ }
- CompositePatternSequence(final List<PatternSequence> sequences) {
- super(concatSequencePatterns(sequences),
findSequenceMaxPrecision(sequences));
- // Only allow two or more sequences
- if (sequences.size() < 2) {
- throw new IllegalArgumentException("was expecting two or more
sequences: " + sequences);
+ private static String createPattern(boolean printSeconds, String
separator, int fractionalDigits) {
+ StringBuilder builder = new StringBuilder();
+ if (printSeconds) {
+ builder.append("ss");
}
+
builder.append(StaticPatternFormatterFactory.escapeLiteral(separator));
+ if (fractionalDigits > 0) {
+ builder.append(Strings.repeat("S", fractionalDigits));
+ }
+ return builder.toString();
+ }
+
+ private static ChronoUnit determinePrecision(boolean printSeconds, int
digits) {
+ return digits > 6
+ ? ChronoUnit.NANOS
+ : digits > 3
+ ? ChronoUnit.MICROS
+ : digits > 0 ? ChronoUnit.MILLIS : printSeconds ?
ChronoUnit.SECONDS : ChronoUnit.FOREVER;
Review Comment:
Fixed in
https://github.com/apache/logging-log4j2/pull/3338/commits/a44e3c96c9cd4fe47945aeec73a609316a3bc277
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]