[logging-log4j2] branch release-2.x updated: [LOG4J2-1246] PatternLayout %date conversion pattern should render time zone designator for ISO-ISO8601.

2018-12-07 Thread ggregory
This is an automated email from the ASF dual-hosted git repository.

ggregory 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 28fe553  [LOG4J2-1246] PatternLayout %date conversion pattern should 
render time zone designator for ISO-ISO8601.
28fe553 is described below

commit 28fe5535fdc32ef7271981fc36407e4324d08e9e
Author: Gary Gregory 
AuthorDate: Fri Dec 7 14:27:16 2018 -0700

[LOG4J2-1246] PatternLayout %date conversion pattern should render time
zone designator for ISO-ISO8601.

- Add new format in pattern layout %d{ISO8601_OFFSET_DATE_TIME_HH}
- Add new format in pattern layout %d{ISO8601_OFFSET_DATE_TIME_HHMM}
- Add new format in pattern layout %d{ISO8601_OFFSET_DATE_TIME_HHCMM}
---
 .../apache/logging/log4j/core/pattern/DatePatternConverterTest.java   | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git 
a/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/DatePatternConverterTest.java
 
b/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/DatePatternConverterTest.java
index b3a6683..0221fdc 100644
--- 
a/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/DatePatternConverterTest.java
+++ 
b/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/DatePatternConverterTest.java
@@ -211,7 +211,7 @@ public class DatePatternConverterTest {
 }
 
 @Test
-public void testFormatLogEventStringBuilderIso8601TimezoneOffset() {
+public void testFormatLogEventStringBuilderIso8601TimezoneOffsetHHCMM() {
 final LogEvent event = new MyLogEvent();
 final String[] optionsWithTimezone = { ISO8601_OFFSET_DATE_TIME_HHCMM 
};
 final DatePatternConverter converter = 
DatePatternConverter.newInstance(optionsWithTimezone);
@@ -225,7 +225,7 @@ public class DatePatternConverterTest {
 }
 
 @Test
-public void testFormatLogEventStringBuilderIso8601TimezoneOffsetXX() {
+public void testFormatLogEventStringBuilderIso8601TimezoneOffsetHHMM() {
 final LogEvent event = new MyLogEvent();
 final String[] optionsWithTimezone = { ISO8601_OFFSET_DATE_TIME_HHMM };
 final DatePatternConverter converter = 
DatePatternConverter.newInstance(optionsWithTimezone);



[logging-log4j2] branch release-2.x updated: [LOG4J2-1246] PatternLayout %date conversion pattern should render time zone designator for ISO-ISO8601.

2018-12-06 Thread ggregory
This is an automated email from the ASF dual-hosted git repository.

ggregory 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 a803c3b  [LOG4J2-1246] PatternLayout %date conversion pattern should 
render time zone designator for ISO-ISO8601.
a803c3b is described below

commit a803c3b91b0de25f5f17dbb872014d6df00aad5f
Author: Gary Gregory 
AuthorDate: Thu Dec 6 10:21:01 2018 -0700

[LOG4J2-1246] PatternLayout %date conversion pattern should render time
zone designator for ISO-ISO8601.

Sort methods for easier porting b/w branches.
---
 .../core/pattern/DatePatternConverterTest.java | 428 ++---
 1 file changed, 214 insertions(+), 214 deletions(-)

diff --git 
a/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/DatePatternConverterTest.java
 
b/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/DatePatternConverterTest.java
index 3bb3677..34f0b08 100644
--- 
a/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/DatePatternConverterTest.java
+++ 
b/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/DatePatternConverterTest.java
@@ -43,6 +43,25 @@ import static org.junit.Assert.*;
 @RunWith(Parameterized.class)
 public class DatePatternConverterTest {
 
+private class MyLogEvent extends AbstractLogEvent {
+private static final long serialVersionUID = 0;
+
+@Override
+public Instant getInstant() {
+final MutableInstant result = new MutableInstant();
+result.initFromEpochMilli(getTimeMillis(), 123456);
+return result;
+}
+
+@Override
+public long getTimeMillis() {
+final Calendar cal = Calendar.getInstance();
+cal.set(2011, Calendar.DECEMBER, 30, 10, 56, 35);
+cal.set(Calendar.MILLISECOND, 987);
+return cal.getTimeInMillis();
+}
+}
+
 /**
  * SimpleTimePattern for DEFAULT.
  */
@@ -84,9 +103,72 @@ public class DatePatternConverterTest {
 field.setBoolean(null, threadLocalEnabled.booleanValue());
 }
 
+private Date date(final int year, final int month, final int date) {
+final Calendar cal = Calendar.getInstance();
+cal.set(year, month, date, 14, 15, 16);
+cal.set(Calendar.MILLISECOND, 123);
+return cal.getTime();
+}
+
+private String precisePattern(final String pattern, final int precision) {
+String search = "SSS";
+int foundIndex = pattern.indexOf(search);
+final String seconds = pattern.substring(0, foundIndex);
+final String remainder = pattern.substring(foundIndex + 
search.length());
+return seconds + "n".substring(0, precision) + remainder;
+}
+
 @Test
-public void testNewInstanceAllowsNullParameter() {
-DatePatternConverter.newInstance(null); // no errors
+public void testFormatDateStringBuilderDefaultPattern() {
+final DatePatternConverter converter = 
DatePatternConverter.newInstance(null);
+final StringBuilder sb = new StringBuilder();
+converter.format(date(2001, 1, 1), sb);
+
+final String expected = "2001-02-01 14:15:16,123";
+assertEquals(expected, sb.toString());
+}
+
+@Test
+public void testFormatDateStringBuilderIso8601() {
+final DatePatternConverter converter = 
DatePatternConverter.newInstance(ISO8601_FORMAT_OPTIONS);
+final StringBuilder sb = new StringBuilder();
+converter.format(date(2001, 1, 1), sb);
+
+final String expected = "2001-02-01T14:15:16,123";
+assertEquals(expected, sb.toString());
+}
+
+@Test
+public void testFormatDateStringBuilderIso8601BasicWithPeriod() {
+final String[] pattern = 
{FixedDateFormat.FixedFormat.ISO8601_BASIC_PERIOD.name()};
+final DatePatternConverter converter = 
DatePatternConverter.newInstance(pattern);
+final StringBuilder sb = new StringBuilder();
+converter.format(date(2001, 1, 1), sb);
+
+final String expected = "20010201T141516.123";
+assertEquals(expected, sb.toString());
+}
+
+@Test
+public void testFormatDateStringBuilderIso8601WithPeriod() {
+final String[] pattern = 
{FixedDateFormat.FixedFormat.ISO8601_PERIOD.name()};
+final DatePatternConverter converter = 
DatePatternConverter.newInstance(pattern);
+final StringBuilder sb = new StringBuilder();
+converter.format(date(2001, 1, 1), sb);
+
+final String expected = "2001-02-01T14:15:16.123";
+assertEquals(expected, sb.toString());
+}
+
+@Test
+public void testFormatDateStringBuilderOriginalPattern() {
+final String[] pattern = {"/MM/dd HH-mm-ss.SSS"};
+final DatePatternConverter converter = 
DatePatternConverter.newInstance(pattern);
+final 

[logging-log4j2] branch release-2.x updated: [LOG4J2-1246] PatternLayout %date conversion pattern should render time zone designator for ISO-ISO8601.

2018-12-06 Thread ggregory
This is an automated email from the ASF dual-hosted git repository.

ggregory 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 8939396  [LOG4J2-1246] PatternLayout %date conversion pattern should 
render time zone designator for ISO-ISO8601.
8939396 is described below

commit 8939396d8f4f572008e1811bcfd6b75c3a814421
Author: Gary Gregory 
AuthorDate: Thu Dec 6 10:17:58 2018 -0700

[LOG4J2-1246] PatternLayout %date conversion pattern should render time
zone designator for ISO-ISO8601.

- Add new format in pattern layout %d{ISO8601_OFFSET_DATE_TIME_HH}
- Add new format in pattern layout %d{ISO8601_OFFSET_DATE_TIME_HHMM}
- Add new format in pattern layout %d{ISO8601_OFFSET_DATE_TIME_HHCMM}
---
 .../log4j/core/pattern/DatePatternConverterTest.java| 13 +++--
 1 file changed, 7 insertions(+), 6 deletions(-)

diff --git 
a/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/DatePatternConverterTest.java
 
b/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/DatePatternConverterTest.java
index c579473..3bb3677 100644
--- 
a/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/DatePatternConverterTest.java
+++ 
b/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/DatePatternConverterTest.java
@@ -56,12 +56,12 @@ public class DatePatternConverterTest {
 /**
  * ISO8601_OFFSET_DATE_TIME_XX string literal.
  */
-private static final String ISO8601_OFFSET_DATE_TIME_XX = 
FixedDateFormat.FixedFormat.ISO8601_OFFSET_DATE_TIME_HHMM.name();
+private static final String ISO8601_OFFSET_DATE_TIME_HHMM = 
FixedDateFormat.FixedFormat.ISO8601_OFFSET_DATE_TIME_HHMM.name();
 
 /**
  * ISO8601_OFFSET_DATE_TIME_XXX string literal.
  */
-private static final String ISO8601_OFFSET_DATE_TIME_XXX = 
FixedDateFormat.FixedFormat.ISO8601_OFFSET_DATE_TIME_HHCMM.name();
+private static final String ISO8601_OFFSET_DATE_TIME_HHCMM = 
FixedDateFormat.FixedFormat.ISO8601_OFFSET_DATE_TIME_HHCMM.name();
 
 private static final String[] ISO8601_FORMAT_OPTIONS = { ISO8601 };
 
@@ -165,7 +165,7 @@ public class DatePatternConverterTest {
 @Test
 public void testFormatLogEventStringBuilderIso8601TimezoneOffset() {
 final LogEvent event = new MyLogEvent();
-final String[] optionsWithTimezone = { ISO8601_OFFSET_DATE_TIME_XXX };
+final String[] optionsWithTimezone = { ISO8601_OFFSET_DATE_TIME_HHCMM 
};
 final DatePatternConverter converter = 
DatePatternConverter.newInstance(optionsWithTimezone);
 final StringBuilder sb = new StringBuilder();
 converter.format(event, sb);
@@ -177,15 +177,16 @@ public class DatePatternConverterTest {
 }
 
 @Test
-public void testFormatLogEventStringBuilderIso8601TimezoneOffsetZ() {
+public void testFormatLogEventStringBuilderIso8601TimezoneOffsetXX() {
 final LogEvent event = new MyLogEvent();
-final String[] optionsWithTimezone = { ISO8601_OFFSET_DATE_TIME_XX };
+final String[] optionsWithTimezone = { ISO8601_OFFSET_DATE_TIME_HHMM };
 final DatePatternConverter converter = 
DatePatternConverter.newInstance(optionsWithTimezone);
 final StringBuilder sb = new StringBuilder();
 converter.format(event, sb);
 
 final SimpleDateFormat sdf = new 
SimpleDateFormat(converter.getPattern());
-final String expected = sdf.format(new Date(event.getTimeMillis()));
+final String format = sdf.format(new Date(event.getTimeMillis()));
+final String expected = format.endsWith("Z") ? format.substring(0, 
format.length() - 1) + "+" : format;
 assertEquals(expected, sb.toString());
 }
 



[logging-log4j2] branch release-2.x updated: [LOG4J2-1246] PatternLayout %date conversion pattern should render time zone designator for ISO-ISO8601.

2018-12-06 Thread ggregory
This is an automated email from the ASF dual-hosted git repository.

ggregory 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 f2b94de  [LOG4J2-1246] PatternLayout %date conversion pattern should 
render time zone designator for ISO-ISO8601.
f2b94de is described below

commit f2b94de43b0521e9159d0f813f791aa749b75207
Author: Gary Gregory 
AuthorDate: Thu Dec 6 09:35:30 2018 -0700

[LOG4J2-1246] PatternLayout %date conversion pattern should render time
zone designator for ISO-ISO8601.

- Add new format in pattern layout %d{ISO8601_OFFSET_DATE_TIME_HH}
- Add new format in pattern layout %d{ISO8601_OFFSET_DATE_TIME_HHMM}
- Add new format in pattern layout %d{ISO8601_OFFSET_DATE_TIME_HHCMM}
---
 src/site/xdoc/manual/layouts.xml.vm | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/site/xdoc/manual/layouts.xml.vm 
b/src/site/xdoc/manual/layouts.xml.vm
index 1cc957a..0508966 100644
--- a/src/site/xdoc/manual/layouts.xml.vm
+++ b/src/site/xdoc/manual/layouts.xml.vm
@@ -747,15 +747,15 @@ WARN  [main]: Message 2
 20121102T143402,781
   
   
-%d{ISO8601_OFFSET_DATE_TIME_X}
+%d{ISO8601_OFFSET_DATE_TIME_HH}
 2012-11-02'T'14:34:02,781-07
   
   
-%d{ISO8601_OFFSET_DATE_TIME_XX}
+%d{ISO8601_OFFSET_DATE_TIME_HHMM}
 2012-11-02'T'14:34:02,781-0700
   
   
-%d{ISO8601_OFFSET_DATE_TIME_XXX}
+%d{ISO8601_OFFSET_DATE_TIME_HHCMM}
 2012-11-02'T'14:34:02,781-07:00
   
   



[logging-log4j2] branch release-2.x updated: [LOG4J2-1246] PatternLayout %date conversion pattern should render time zone designator for ISO-ISO8601.

2018-12-06 Thread ggregory
This is an automated email from the ASF dual-hosted git repository.

ggregory 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 c015aab  [LOG4J2-1246] PatternLayout %date conversion pattern should 
render time zone designator for ISO-ISO8601.
c015aab is described below

commit c015aab8228d58e2e3c6d1e06d378b36764ca86f
Author: Gary Gregory 
AuthorDate: Thu Dec 6 09:34:07 2018 -0700

[LOG4J2-1246] PatternLayout %date conversion pattern should render time
zone designator for ISO-ISO8601.

- Add new format in pattern layout %d{ISO8601_OFFSET_DATE_TIME_HH}
- Add new format in pattern layout %d{ISO8601_OFFSET_DATE_TIME_HHMM}
- Add new format in pattern layout %d{ISO8601_OFFSET_DATE_TIME_HHCMM}
---
 .../log4j/core/util/datetime/FixedDateFormat.java  | 29 --
 .../core/pattern/DatePatternConverterTest.java |  4 +--
 2 files changed, 18 insertions(+), 15 deletions(-)

diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/util/datetime/FixedDateFormat.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/util/datetime/FixedDateFormat.java
index e520334..dd80585 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/util/datetime/FixedDateFormat.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/util/datetime/FixedDateFormat.java
@@ -117,19 +117,19 @@ public class FixedDateFormat {
 //ISO8601_OFFSET_DATE_TIME("-MM-dd'T'HH:mmXXX", "-MM-dd'T'", 
2, ':', 1, ' ', 0, 0, FixedTimeZoneFormat.XXX),
 
 /**
- * ISO8601_OFFSET_DATE_TIME_X time format: {@code 
"-MM-dd'T'HH:mm:ss,SSSX"}.
+ * ISO8601 time format: {@code "-MM-dd'T'HH:mm:ss,SSSX"} with a 
time zone like {@code -07}.
  */
-ISO8601_OFFSET_DATE_TIME_X("-MM-dd'T'HH:mm:ss,SSSX", 
"-MM-dd'T'", 2, ':', 1, ',', 1, 3, FixedTimeZoneFormat.X),
+ISO8601_OFFSET_DATE_TIME_HH("-MM-dd'T'HH:mm:ss,SSSX", 
"-MM-dd'T'", 2, ':', 1, ',', 1, 3, FixedTimeZoneFormat.HH),
 
 /**
- * ISO8601_OFFSET_DATE_TIME_XX time format: {@code 
"-MM-dd'T'HH:mm:ss,SSSXX"}.
+ * ISO8601 time format: {@code "-MM-dd'T'HH:mm:ss,SSSXX"} with a 
time zone like {@code -0700}.
  */
-ISO8601_OFFSET_DATE_TIME_XX("-MM-dd'T'HH:mm:ss,SSSXX", 
"-MM-dd'T'", 2, ':', 1, ',', 1, 3, FixedTimeZoneFormat.XX),
+ISO8601_OFFSET_DATE_TIME_HHMM("-MM-dd'T'HH:mm:ss,SSSXX", 
"-MM-dd'T'", 2, ':', 1, ',', 1, 3, FixedTimeZoneFormat.HHMM),
 
 /**
- * ISO8601_OFFSET_DATE_TIME_XXX time format: {@code 
"-MM-dd'T'HH:mm:ss,SSSXXX"}.
+ * ISO8601 time format: {@code "-MM-dd'T'HH:mm:ss,SSSXXX"} with a 
time zone like {@code -07:00}.
  */
-ISO8601_OFFSET_DATE_TIME_XXX("-MM-dd'T'HH:mm:ss,SSSXXX", 
"-MM-dd'T'", 2, ':', 1, ',', 1, 3, FixedTimeZoneFormat.XXX),
+ISO8601_OFFSET_DATE_TIME_HHCMM("-MM-dd'T'HH:mm:ss,SSSXXX", 
"-MM-dd'T'", 2, ':', 1, ',', 1, 3, FixedTimeZoneFormat.HHCMM),
 
 /**
  * ISO8601 time format: {@code "-MM-dd'T'HH:mm:ss.SSS"}.
@@ -293,25 +293,28 @@ public class FixedDateFormat {
 private static final char NONE = (char) 0;
 
 /**
- * Fixed time zone formats. The enum names are symbols from
- * 
https://docs.oracle.com/javase/8/docs/api/java/time/format/DateTimeFormatter.html.
+ * Fixed time zone formats. The enum names are symbols from Java's https://docs.oracle.com/javase/8/docs/api/java/time/format/DateTimeFormatter.html;>DateTimeFormatter.
+ * 
+ * @see https://docs.oracle.com/javase/8/docs/api/java/time/format/DateTimeFormatter.html;>DateTimeFormatter
  */
 public enum FixedTimeZoneFormat {
 
 /**
- * Offset like {@code -07}
+ * Offset like {@code -07}.
  */
-X(NONE, false, 3),
+HH(NONE, false, 3),
 
 /**
  * Offset like {@code -0700}.
  */
-XX(NONE, true, 5), 
+HHMM(NONE, true, 5), 
 
 /** 
- * Offset like {@code -07:00}
+ * Offset like {@code -07:00}.
  */
-XXX(':', true, 6);
+HHCMM(':', true, 6);
 
 private FixedTimeZoneFormat() {
 this(NONE, true, 4);
diff --git 
a/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/DatePatternConverterTest.java
 
b/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/DatePatternConverterTest.java
index df2b5b2..c579473 100644
--- 
a/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/DatePatternConverterTest.java
+++ 
b/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/DatePatternConverterTest.java
@@ -56,12 +56,12 @@ public class DatePatternConverterTest {
 /**
  * ISO8601_OFFSET_DATE_TIME_XX string literal.
  */
-private static final 

[logging-log4j2] branch release-2.x updated: [LOG4J2-1246] PatternLayout %date conversion pattern should render time zone designator for ISO-ISO8601.

2018-12-06 Thread ggregory
This is an automated email from the ASF dual-hosted git repository.

ggregory 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 87904fc  [LOG4J2-1246] PatternLayout %date conversion pattern should 
render time zone designator for ISO-ISO8601.
87904fc is described below

commit 87904fcdfce800eb8d32fc30ef69884bee1fccd2
Author: Gary Gregory 
AuthorDate: Thu Dec 6 09:12:05 2018 -0700

[LOG4J2-1246] PatternLayout %date conversion pattern should render time
zone designator for ISO-ISO8601.

- Add new format in pattern layout %d{ISO8601_OFFSET_DATE_TIME_X}
- Add new format in pattern layout %d{ISO8601_OFFSET_DATE_TIME_XX}
- Add new format in pattern layout %d{ISO8601_OFFSET_DATE_TIME_XXX}
---
 .../log4j/core/util/datetime/FixedDateFormat.java  | 14 +-
 .../log4j/core/pattern/DatePatternConverterTest.java   | 18 +-
 src/site/xdoc/manual/layouts.xml.vm|  4 
 3 files changed, 10 insertions(+), 26 deletions(-)

diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/util/datetime/FixedDateFormat.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/util/datetime/FixedDateFormat.java
index 13971dc..e520334 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/util/datetime/FixedDateFormat.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/util/datetime/FixedDateFormat.java
@@ -132,11 +132,6 @@ public class FixedDateFormat {
 ISO8601_OFFSET_DATE_TIME_XXX("-MM-dd'T'HH:mm:ss,SSSXXX", 
"-MM-dd'T'", 2, ':', 1, ',', 1, 3, FixedTimeZoneFormat.XXX),
 
 /**
- * ISO8601_OFFSET_DATE_TIME_Z time format: {@code 
"-MM-dd'T'HH:mm:ss,SSSZ"}.
- */
-ISO8601_OFFSET_DATE_TIME_Z("-MM-dd'T'HH:mm:ss,SSSZ", 
"-MM-dd'T'", 2, ':', 1, ',', 1, 3, FixedTimeZoneFormat.Z),
-
-/**
  * ISO8601 time format: {@code "-MM-dd'T'HH:mm:ss.SSS"}.
  */
 ISO8601_PERIOD("-MM-dd'T'HH:mm:ss.SSS", "-MM-dd'T'", 2, ':', 
1, '.', 1, 3, null);
@@ -310,21 +305,14 @@ public class FixedDateFormat {
 
 /**
  * Offset like {@code -0700}.
- * Same as Z.
  */
 XX(NONE, true, 5), 
 
 /** 
  * Offset like {@code -07:00}
  */
-XXX(':', true, 6), 
+XXX(':', true, 6);
 
-/**
- * Offset like {@code -0700}.
- * Same as XX.
- */
-Z(NONE, true, 5); 
-
 private FixedTimeZoneFormat() {
 this(NONE, true, 4);
 }
diff --git 
a/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/DatePatternConverterTest.java
 
b/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/DatePatternConverterTest.java
index 3ec62bc..df2b5b2 100644
--- 
a/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/DatePatternConverterTest.java
+++ 
b/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/DatePatternConverterTest.java
@@ -51,19 +51,19 @@ public class DatePatternConverterTest {
 /**
  * ISO8601 string literal.
  */
-private static final String ISO8601_FORMAT = 
FixedDateFormat.FixedFormat.ISO8601.name();
+private static final String ISO8601 = 
FixedDateFormat.FixedFormat.ISO8601.name();
 
 /**
- * ISO8601_OFFSET string literal.
+ * ISO8601_OFFSET_DATE_TIME_XX string literal.
  */
-private static final String ISO8601_OFFSET_DATE_TIME_XXX = 
FixedDateFormat.FixedFormat.ISO8601_OFFSET_DATE_TIME_XXX.name();
+private static final String ISO8601_OFFSET_DATE_TIME_XX = 
FixedDateFormat.FixedFormat.ISO8601_OFFSET_DATE_TIME_XX.name();
 
 /**
- * ISO8601_OFFSET_Z string literal.
+ * ISO8601_OFFSET_DATE_TIME_XXX string literal.
  */
-private static final String ISO8601_OFFSET_Z_FORMAT = 
FixedDateFormat.FixedFormat.ISO8601_OFFSET_DATE_TIME_Z.name();
+private static final String ISO8601_OFFSET_DATE_TIME_XXX = 
FixedDateFormat.FixedFormat.ISO8601_OFFSET_DATE_TIME_XXX.name();
 
-private static final String[] ISO8601_FORMAT_OPTIONS = {ISO8601_FORMAT};
+private static final String[] ISO8601_FORMAT_OPTIONS = { ISO8601 };
 
 @Parameterized.Parameters(name = "threadLocalEnabled={0}")
 public static Collection data() {
@@ -130,7 +130,7 @@ public class DatePatternConverterTest {
 @Test
 public void testFormatLogEventStringBuilderIso8601TimezoneJST() {
 final LogEvent event = new MyLogEvent();
-final String[] optionsWithTimezone = { ISO8601_FORMAT, "JST" };
+final String[] optionsWithTimezone = { ISO8601, "JST" };
 final DatePatternConverter converter = 
DatePatternConverter.newInstance(optionsWithTimezone);
 final StringBuilder sb = new StringBuilder();
 converter.format(event, sb);
@@ -148,7 +148,7 @@ public class 

[logging-log4j2] branch release-2.x updated: [LOG4J2-1246] PatternLayout %date conversion pattern should render time zone designator for ISO-ISO8601.

2018-12-05 Thread ggregory
This is an automated email from the ASF dual-hosted git repository.

ggregory 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 6276715  [LOG4J2-1246] PatternLayout %date conversion pattern should 
render time zone designator for ISO-ISO8601.
6276715 is described below

commit 6276715e0d016a4784f626288bc568e3fa66786f
Author: Gary Gregory 
AuthorDate: Wed Dec 5 11:08:17 2018 -0700

[LOG4J2-1246] PatternLayout %date conversion pattern should render time
zone designator for ISO-ISO8601.

- Add new format in pattern layout %d{ISO8601_OFFSET_DATE_TIME_X}
- Add new format in pattern layout %d{ISO8601_OFFSET_DATE_TIME_XX}
- Add new format in pattern layout %d{ISO8601_OFFSET_DATE_TIME_XXX}
- Add new format in pattern layout %d{ISO8601_OFFSET_DATE_TIME_Z}
---
 .../org/apache/logging/log4j/core/pattern/DatePatternConverterTest.java | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git 
a/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/DatePatternConverterTest.java
 
b/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/DatePatternConverterTest.java
index 0a9f3bd..3ec62bc 100644
--- 
a/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/DatePatternConverterTest.java
+++ 
b/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/DatePatternConverterTest.java
@@ -172,7 +172,7 @@ public class DatePatternConverterTest {
 
 final SimpleDateFormat sdf = new 
SimpleDateFormat(converter.getPattern());
 final String format = sdf.format(new Date(event.getTimeMillis()));
-final String expected = format.endsWith("Z") ? format.substring(0, 
format.length()) + "+00:00" : format;
+final String expected = format.endsWith("Z") ? format.substring(0, 
format.length() - 1) + "+00:00" : format;
 assertEquals(expected, sb.toString());
 }
 



[logging-log4j2] branch release-2.x updated: [LOG4J2-1246] PatternLayout %date conversion pattern should render time zone designator for ISO-ISO8601.

2018-12-05 Thread ggregory
This is an automated email from the ASF dual-hosted git repository.

ggregory 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 e07a4f8  [LOG4J2-1246] PatternLayout %date conversion pattern should 
render time zone designator for ISO-ISO8601.
e07a4f8 is described below

commit e07a4f863f0ed47b1f2d98e8d29d73ab1b5baa79
Author: Gary Gregory 
AuthorDate: Wed Dec 5 09:39:45 2018 -0700

[LOG4J2-1246] PatternLayout %date conversion pattern should render time
zone designator for ISO-ISO8601.

- Add new format in pattern layout %d{ISO8601_OFFSET_DATE_TIME_X}
- Add new format in pattern layout %d{ISO8601_OFFSET_DATE_TIME_XX}
- Add new format in pattern layout %d{ISO8601_OFFSET_DATE_TIME_XXX}
- Add new format in pattern layout %d{ISO8601_OFFSET_DATE_TIME_Z}
---
 .../logging/log4j/core/pattern/DatePatternConverterTest.java | 12 +++-
 1 file changed, 7 insertions(+), 5 deletions(-)

diff --git 
a/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/DatePatternConverterTest.java
 
b/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/DatePatternConverterTest.java
index 8577308..0a9f3bd 100644
--- 
a/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/DatePatternConverterTest.java
+++ 
b/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/DatePatternConverterTest.java
@@ -25,6 +25,7 @@ import java.util.Collection;
 import java.util.Date;
 import java.util.TimeZone;
 
+import org.apache.commons.lang3.StringUtils;
 import org.apache.logging.log4j.core.AbstractLogEvent;
 import org.apache.logging.log4j.core.LogEvent;
 import org.apache.logging.log4j.core.util.Constants;
@@ -129,7 +130,7 @@ public class DatePatternConverterTest {
 @Test
 public void testFormatLogEventStringBuilderIso8601TimezoneJST() {
 final LogEvent event = new MyLogEvent();
-final String[] optionsWithTimezone = {ISO8601_FORMAT, "JST"};
+final String[] optionsWithTimezone = { ISO8601_FORMAT, "JST" };
 final DatePatternConverter converter = 
DatePatternConverter.newInstance(optionsWithTimezone);
 final StringBuilder sb = new StringBuilder();
 converter.format(event, sb);
@@ -147,7 +148,7 @@ public class DatePatternConverterTest {
 @Test
 public void testFormatLogEventStringBuilderIso8601TimezoneZ() {
 final LogEvent event = new MyLogEvent();
-final String[] optionsWithTimezone = {ISO8601_FORMAT, "Z"};
+final String[] optionsWithTimezone = { ISO8601_FORMAT, "Z" };
 final DatePatternConverter converter = 
DatePatternConverter.newInstance(optionsWithTimezone);
 final StringBuilder sb = new StringBuilder();
 converter.format(event, sb);
@@ -164,20 +165,21 @@ public class DatePatternConverterTest {
 @Test
 public void testFormatLogEventStringBuilderIso8601TimezoneOffset() {
 final LogEvent event = new MyLogEvent();
-final String[] optionsWithTimezone = {ISO8601_OFFSET_DATE_TIME_XXX};
+final String[] optionsWithTimezone = { ISO8601_OFFSET_DATE_TIME_XXX };
 final DatePatternConverter converter = 
DatePatternConverter.newInstance(optionsWithTimezone);
 final StringBuilder sb = new StringBuilder();
 converter.format(event, sb);
 
 final SimpleDateFormat sdf = new 
SimpleDateFormat(converter.getPattern());
-final String expected = sdf.format(new Date(event.getTimeMillis()));
+final String format = sdf.format(new Date(event.getTimeMillis()));
+final String expected = format.endsWith("Z") ? format.substring(0, 
format.length()) + "+00:00" : format;
 assertEquals(expected, sb.toString());
 }
 
 @Test
 public void testFormatLogEventStringBuilderIso8601TimezoneOffsetZ() {
 final LogEvent event = new MyLogEvent();
-final String[] optionsWithTimezone = {ISO8601_OFFSET_Z_FORMAT};
+final String[] optionsWithTimezone = { ISO8601_OFFSET_Z_FORMAT };
 final DatePatternConverter converter = 
DatePatternConverter.newInstance(optionsWithTimezone);
 final StringBuilder sb = new StringBuilder();
 converter.format(event, sb);



[logging-log4j2] branch release-2.x updated: [LOG4J2-1246] PatternLayout %date conversion pattern should render time zone designator for ISO-ISO8601.

2018-12-04 Thread ggregory
This is an automated email from the ASF dual-hosted git repository.

ggregory 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 2e7af04  [LOG4J2-1246] PatternLayout %date conversion pattern should 
render time zone designator for ISO-ISO8601.
2e7af04 is described below

commit 2e7af041728c4f03d65a533ab3b3a0207c39c200
Author: Gary Gregory 
AuthorDate: Tue Dec 4 18:20:09 2018 -0700

[LOG4J2-1246] PatternLayout %date conversion pattern should render time
zone designator for ISO-ISO8601.

- Add new format in pattern layout %d{ISO8601_OFFSET_DATE_TIME_X}
- Add new format in pattern layout %d{ISO8601_OFFSET_DATE_TIME_XX}
- Add new format in pattern layout %d{ISO8601_OFFSET_DATE_TIME_XXX}
- Add new format in pattern layout %d{ISO8601_OFFSET_DATE_TIME_Z}
---
 src/changes/changes.xml | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 289f0de..c11a311 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -148,6 +148,9 @@
   
 Allow a JDBC Appender to truncate strings to match a table's metadata 
column length limit.
   
+  
+PatternLayout %date conversion pattern should render time zone 
designator for ISO-ISO8601.
+  
 
 
   



[logging-log4j2] branch release-2.x updated: [LOG4J2-1246] PatternLayout %date conversion pattern should render time zone designator for ISO-ISO8601.

2018-12-04 Thread ggregory
This is an automated email from the ASF dual-hosted git repository.

ggregory 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 140b50b  [LOG4J2-1246] PatternLayout %date conversion pattern should 
render time zone designator for ISO-ISO8601.
140b50b is described below

commit 140b50bf7436bab189b0a1869a46cf957c22e99c
Author: Gary Gregory 
AuthorDate: Tue Dec 4 17:49:29 2018 -0700

[LOG4J2-1246] PatternLayout %date conversion pattern should render time
zone designator for ISO-ISO8601.

- Add new format in pattern layout %d{ISO8601_OFFSET_DATE_TIME_X}
- Add new format in pattern layout %d{ISO8601_OFFSET_DATE_TIME_XX}
- Add new format in pattern layout %d{ISO8601_OFFSET_DATE_TIME_XXX}
- Add new format in pattern layout %d{ISO8601_OFFSET_DATE_TIME_Z}
---
 .../apache/logging/log4j/core/util/datetime/FixedDateFormat.java  | 8 
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/util/datetime/FixedDateFormat.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/util/datetime/FixedDateFormat.java
index 6da5e7a..13971dc 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/util/datetime/FixedDateFormat.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/util/datetime/FixedDateFormat.java
@@ -390,7 +390,7 @@ public class FixedDateFormat {
 private final char millisSeparatorChar;
 private final int timeSeparatorLength;
 private final int millisSeparatorLength;
-private final FixedTimeZoneFormat timeZoneFormat;
+private final FixedTimeZoneFormat fixedTimeZoneFormat;
 
 private volatile long midnightToday = 0;
 private volatile long midnightTomorrow = 0;
@@ -434,7 +434,7 @@ public class FixedDateFormat {
 this.timeSeparatorLength = fixedFormat.timeSeparatorLength;
 this.millisSeparatorChar = fixedFormat.millisSeparatorChar;
 this.millisSeparatorLength = fixedFormat.millisSeparatorLength;
-this.timeZoneFormat = fixedFormat.fixedTimeZoneFormat; // may be null
+this.fixedTimeZoneFormat = fixedFormat.fixedTimeZoneFormat; // may be 
null
 this.length = fixedFormat.getLength();
 this.secondFractionDigits = Math.max(1, Math.min(9, 
secondFractionDigits));
 this.fastDateFormat = fixedFormat.getFastDateFormat(tz);
@@ -673,8 +673,8 @@ public class FixedDateFormat {
 }
 
 private int writeTimeZone(final long epochMillis, final char[] buffer, int 
pos) {
-if (timeZoneFormat != null) {
-pos = timeZoneFormat.write(timeZone.getOffset(epochMillis), 
buffer, pos);
+if (fixedTimeZoneFormat != null) {
+pos = fixedTimeZoneFormat.write(timeZone.getOffset(epochMillis), 
buffer, pos);
 }
 return pos;
 }



[logging-log4j2] branch release-2.x updated: [LOG4J2-1246] PatternLayout %date conversion pattern should render time zone designator for ISO-ISO8601.

2018-12-04 Thread ggregory
This is an automated email from the ASF dual-hosted git repository.

ggregory 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 7039681  [LOG4J2-1246] PatternLayout %date conversion pattern should 
render time zone designator for ISO-ISO8601.
7039681 is described below

commit 70396811726248a34a33996ba3f541201ffa64e0
Author: Gary Gregory 
AuthorDate: Tue Dec 4 17:46:58 2018 -0700

[LOG4J2-1246] PatternLayout %date conversion pattern should render time
zone designator for ISO-ISO8601.

- Add new format in pattern layout %d{ISO8601_OFFSET_DATE_TIME_X}
- Add new format in pattern layout %d{ISO8601_OFFSET_DATE_TIME_XX}
- Add new format in pattern layout %d{ISO8601_OFFSET_DATE_TIME_XXX}
- Add new format in pattern layout %d{ISO8601_OFFSET_DATE_TIME_Z}
---
 .../logging/log4j/core/util/datetime/FixedDateFormat.java  | 10 +-
 .../logging/log4j/core/pattern/DatePatternConverterTest.java   |  4 ++--
 .../logging/log4j/core/util/datetime/FixedDateFormatTest.java  | 10 +-
 3 files changed, 12 insertions(+), 12 deletions(-)

diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/util/datetime/FixedDateFormat.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/util/datetime/FixedDateFormat.java
index c067314..6da5e7a 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/util/datetime/FixedDateFormat.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/util/datetime/FixedDateFormat.java
@@ -153,7 +153,7 @@ public class FixedDateFormat {
 private final char millisSeparatorChar;
 private final int millisSeparatorLength;
 private final int secondFractionDigits;
-private final FixedTimeZoneFormat timeZoneFormat;
+private final FixedTimeZoneFormat fixedTimeZoneFormat;
 
 FixedFormat(final String pattern, final String datePattern, final int 
escapeCount, final char timeSeparator,
 final int timeSepLength, final char millisSeparator, final 
int millisSepLength,
@@ -166,7 +166,7 @@ public class FixedDateFormat {
 this.datePattern = datePattern; // may be null
 this.escapeCount = escapeCount;
 this.secondFractionDigits = secondFractionDigits;
-this.timeZoneFormat = timeZoneFormat;
+this.fixedTimeZoneFormat = timeZoneFormat;
 }
 
 /**
@@ -290,8 +290,8 @@ public class FixedDateFormat {
  * Returns the optional time zone format.
  * @return the optional time zone format, may be null.
  */
-public FixedTimeZoneFormat getTimeZoneFormat() {
-return timeZoneFormat;
+public FixedTimeZoneFormat getFixedTimeZoneFormat() {
+return fixedTimeZoneFormat;
 }
 }
 
@@ -434,7 +434,7 @@ public class FixedDateFormat {
 this.timeSeparatorLength = fixedFormat.timeSeparatorLength;
 this.millisSeparatorChar = fixedFormat.millisSeparatorChar;
 this.millisSeparatorLength = fixedFormat.millisSeparatorLength;
-this.timeZoneFormat = fixedFormat.timeZoneFormat; // may be null
+this.timeZoneFormat = fixedFormat.fixedTimeZoneFormat; // may be null
 this.length = fixedFormat.getLength();
 this.secondFractionDigits = Math.max(1, Math.min(9, 
secondFractionDigits));
 this.fastDateFormat = fixedFormat.getFastDateFormat(tz);
diff --git 
a/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/DatePatternConverterTest.java
 
b/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/DatePatternConverterTest.java
index e391917..8577308 100644
--- 
a/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/DatePatternConverterTest.java
+++ 
b/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/DatePatternConverterTest.java
@@ -240,7 +240,7 @@ public class DatePatternConverterTest {
 
 final String[] milliOptions = { pattern, timeZone };
 
DatePatternConverter.newInstance(milliOptions).format(event, milliBuilder);
-FixedTimeZoneFormat timeZoneFormat = 
format.getTimeZoneFormat();
+FixedTimeZoneFormat timeZoneFormat = 
format.getFixedTimeZoneFormat();
 final int truncateLen = 3 + (timeZoneFormat != null ? 
timeZoneFormat.getLength() : 0);
 final String tz = timeZoneFormat != null
 ? milliBuilder.substring(milliBuilder.length() - 
timeZoneFormat.getLength(),
@@ -291,7 +291,7 @@ public class DatePatternConverterTest {
 
 final String[] milliOptions = { pattern };
 DatePatternConverter.newInstance(milliOptions).format(event, 
milliBuilder);
-FixedTimeZoneFormat timeZoneFormat = format.getTimeZoneFormat();
+FixedTimeZoneFormat 

[logging-log4j2] branch release-2.x updated: [LOG4J2-1246] PatternLayout %date conversion pattern should render time zone designator for ISO-ISO8601.

2018-12-04 Thread ggregory
This is an automated email from the ASF dual-hosted git repository.

ggregory 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 31ddec3  [LOG4J2-1246] PatternLayout %date conversion pattern should 
render time zone designator for ISO-ISO8601.
31ddec3 is described below

commit 31ddec308340531dee7f33687546282b4f3d7c83
Author: Gary Gregory 
AuthorDate: Tue Dec 4 17:28:09 2018 -0700

[LOG4J2-1246] PatternLayout %date conversion pattern should render time
zone designator for ISO-ISO8601.

- Add new format in pattern layout %d{ISO8601_OFFSET_DATE_TIME_X}
- Add new format in pattern layout %d{ISO8601_OFFSET_DATE_TIME_XX}
- Add new format in pattern layout %d{ISO8601_OFFSET_DATE_TIME_XXX}
- Add new format in pattern layout %d{ISO8601_OFFSET_DATE_TIME_Z}
---
 .../org/apache/logging/log4j/core/pattern/DatePatternConverter.java | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/DatePatternConverter.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/DatePatternConverter.java
index fa5a8c3..0666974 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/DatePatternConverter.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/DatePatternConverter.java
@@ -88,7 +88,7 @@ public final class DatePatternConverter extends 
LogEventPatternConverter impleme
 private final FixedDateFormat fixedDateFormat;
 
 // below fields are only used in ThreadLocal caching mode
-private final char[] cachedBuffer = new char[70]; // max length of 
formatted date-time in any format < 64
+private final char[] cachedBuffer = new char[70]; // max length of 
formatted date-time in any format < 70
 private int length = 0;
 
 FixedFormatter(final FixedDateFormat fixedDateFormat) {



[logging-log4j2] branch release-2.x updated: [LOG4J2-1246] PatternLayout %date conversion pattern should render time zone designator for ISO-ISO8601.

2018-12-04 Thread ggregory
This is an automated email from the ASF dual-hosted git repository.

ggregory 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 8e4f428  [LOG4J2-1246] PatternLayout %date conversion pattern should 
render time zone designator for ISO-ISO8601.
8e4f428 is described below

commit 8e4f4286940fe2199221a90e72d006563fce4083
Author: Gary Gregory 
AuthorDate: Tue Dec 4 17:22:19 2018 -0700

[LOG4J2-1246] PatternLayout %date conversion pattern should render time
zone designator for ISO-ISO8601.

- Add new format in pattern layout %d{ISO8601_OFFSET_DATE_TIME_X}
- Add new format in pattern layout %d{ISO8601_OFFSET_DATE_TIME_XX}
- Add new format in pattern layout %d{ISO8601_OFFSET_DATE_TIME_XXX}
- Add new format in pattern layout %d{ISO8601_OFFSET_DATE_TIME_Z}
---
 .../log4j/core/pattern/DatePatternConverter.java   |   2 +-
 .../log4j/core/util/datetime/FixedDateFormat.java  | 224 +
 .../rolling/OnStartupTriggeringPolicyTest.java |   1 +
 .../core/pattern/DatePatternConverterTest.java | 173 
 .../core/util/datetime/FixedDateFormatTest.java|  54 +++--
 src/site/xdoc/manual/layouts.xml.vm|  16 ++
 6 files changed, 373 insertions(+), 97 deletions(-)

diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/DatePatternConverter.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/DatePatternConverter.java
index 703786b..fa5a8c3 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/DatePatternConverter.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/DatePatternConverter.java
@@ -88,7 +88,7 @@ public final class DatePatternConverter extends 
LogEventPatternConverter impleme
 private final FixedDateFormat fixedDateFormat;
 
 // below fields are only used in ThreadLocal caching mode
-private final char[] cachedBuffer = new char[64]; // max length of 
formatted date-time in any format < 64
+private final char[] cachedBuffer = new char[70]; // max length of 
formatted date-time in any format < 64
 private int length = 0;
 
 FixedFormatter(final FixedDateFormat fixedDateFormat) {
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/util/datetime/FixedDateFormat.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/util/datetime/FixedDateFormat.java
index f58a29b..c067314 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/util/datetime/FixedDateFormat.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/util/datetime/FixedDateFormat.java
@@ -31,6 +31,7 @@ import java.util.concurrent.TimeUnit;
  * 
  * Related benchmarks: 
/log4j-perf/src/main/java/org/apache/logging/log4j/perf/jmh/TimeFormatBenchmark.java
 and
  * 
/log4j-perf/src/main/java/org/apache/logging/log4j/perf/jmh/ThreadsafeDateFormatBenchmark.java
+ * 
  */
 public class FixedDateFormat {
 
@@ -38,78 +39,107 @@ public class FixedDateFormat {
  * Enumeration over the supported date/time format patterns.
  * 
  * Package protected for unit tests.
+ * 
  */
 public enum FixedFormat {
+
 /**
  * ABSOLUTE time format: {@code "HH:mm:ss,SSS"}.
  */
-ABSOLUTE("HH:mm:ss,SSS", null, 0, ':', 1, ',', 1, 3),
+ABSOLUTE("HH:mm:ss,SSS", null, 0, ':', 1, ',', 1, 3, null),
 /**
  * ABSOLUTE time format with microsecond precision: {@code 
"HH:mm:ss,nn"}.
  */
-ABSOLUTE_MICROS("HH:mm:ss,nn", null, 0, ':', 1, ',', 1, 6),
+ABSOLUTE_MICROS("HH:mm:ss,nn", null, 0, ':', 1, ',', 1, 6, null),
 /**
  * ABSOLUTE time format with nanosecond precision: {@code 
"HH:mm:ss,n"}.
  */
-ABSOLUTE_NANOS("HH:mm:ss,n", null, 0, ':', 1, ',', 1, 9),
+ABSOLUTE_NANOS("HH:mm:ss,n", null, 0, ':', 1, ',', 1, 9, null),
 
 /**
  * ABSOLUTE time format variation with period separator: {@code 
"HH:mm:ss.SSS"}.
  */
-ABSOLUTE_PERIOD("HH:mm:ss.SSS", null, 0, ':', 1, '.', 1, 3),
+ABSOLUTE_PERIOD("HH:mm:ss.SSS", null, 0, ':', 1, '.', 1, 3, null),
 
 /**
  * COMPACT time format: {@code "MMddHHmmssSSS"}.
  */
-COMPACT("MMddHHmmssSSS", "MMdd", 0, ' ', 0, ' ', 0, 3),
+COMPACT("MMddHHmmssSSS", "MMdd", 0, ' ', 0, ' ', 0, 3, null),
 
 /**
  * DATE_AND_TIME time format: {@code "dd MMM  HH:mm:ss,SSS"}.
  */
-DATE("dd MMM  HH:mm:ss,SSS", "dd MMM  ", 0, ':', 1, ',', 1, 3),
+DATE("dd MMM  HH:mm:ss,SSS", "dd MMM  ", 0, ':', 1, ',', 1, 3, 
null),
 
 /**
  * DATE_AND_TIME time format variation with period separator: {@code 
"dd MMM  HH:mm:ss.SSS"}.