@Test public void testFormatLogEventStringBuilderIso8601TimezoneUTC() { final LogEvent event = new MyLogEvent(); final DatePatternConverter converter = DatePatternConverter.newInstance(new String[] {"ISO8601", "UTC"}); final StringBuilder sb = new StringBuilder(); converter.format(event, sb); final TimeZone tz = TimeZone.getTimeZone("UTC"); final SimpleDateFormat sdf = new SimpleDateFormat(converter.getPattern()); sdf.setTimeZone(tz); final long adjusted = event.getTimeMillis() + tz.getDSTSavings(); final String expected = sdf.format(new Date(adjusted)); // final String expected = "2011-12-30T09:56:35,987"; assertEquals(expected, sb.toString()); }
@Test public void testFormatLogEventStringBuilderIso8601TimezoneJST() { final LogEvent event = new MyLogEvent(); final String[] optionsWithTimezone = {ISO8601_FORMAT, "JST"}; final DatePatternConverter converter = DatePatternConverter.newInstance(optionsWithTimezone); final StringBuilder sb = new StringBuilder(); converter.format(event, sb); // JST=Japan Standard Time: UTC+9:00 final TimeZone tz = TimeZone.getTimeZone("JST"); final SimpleDateFormat sdf = new SimpleDateFormat(converter.getPattern()); sdf.setTimeZone(tz); final long adjusted = event.getTimeMillis() + tz.getDSTSavings(); final String expected = sdf.format(new Date(adjusted)); // final String expected = "2011-12-30T18:56:35,987"; // in CET (Central Eastern Time: Amsterdam) assertEquals(expected, sb.toString()); }
@Test public void testInvalidLongPatternIgnoresExcessiveDigits() { final StringBuilder precise = new StringBuilder(); final StringBuilder milli = new StringBuilder(); final LogEvent event = new MyLogEvent(); for (final FixedDateFormat.FixedFormat format : FixedDateFormat.FixedFormat.values()) { if (format.getPattern().endsWith("n")) { continue; // ignore patterns that already have precise time formats } precise.setLength(0); milli.setLength(0); final String pattern = format.getPattern().substring(0, format.getPattern().indexOf("SSS")); final String[] preciseOptions = {pattern + "nnnnnnnnn" + "n"}; // too long final DatePatternConverter preciseConverter = DatePatternConverter.newInstance(preciseOptions); preciseConverter.format(event, precise); final String[] milliOptions = {format.getPattern()}; DatePatternConverter.newInstance(milliOptions).format(event, milli); milli.setLength(milli.length() - 3); // truncate millis String expected = milli.append("987123456").toString(); assertEquals(expected, precise.toString()); //System.out.println(preciseOptions[0] + ": " + precise); } }
@Test public void testPredefinedFormatWithAnyValidNanoPrecision() { final StringBuilder precise = new StringBuilder(); final StringBuilder milli = new StringBuilder(); final LogEvent event = new MyLogEvent(); for (String timeZone : new String[]{"PDT", null}) { // Pacific Daylight Time=UTC-8:00 for (final FixedDateFormat.FixedFormat format : FixedDateFormat.FixedFormat.values()) { for (int i = 1; i <= 9; i++) { if (format.getPattern().endsWith("n")) { continue; // ignore patterns that already have precise time formats } precise.setLength(0); milli.setLength(0); final String[] preciseOptions = {precisePattern(format.getPattern(), i), timeZone}; final DatePatternConverter preciseConverter = DatePatternConverter.newInstance(preciseOptions); preciseConverter.format(event, precise); final String[] milliOptions = {format.getPattern(), timeZone}; DatePatternConverter.newInstance(milliOptions).format(event, milli); milli.setLength(milli.length() - 3); // truncate millis String expected = milli.append("987123456".substring(0, i)).toString(); assertEquals(expected, precise.toString()); //System.out.println(preciseOptions[0] + ": " + precise); } } } }
@Test public void testFormatLogEventStringBuilderDefaultPattern() { final LogEvent event = new MyLogEvent(); final DatePatternConverter converter = DatePatternConverter.newInstance(null); final StringBuilder sb = new StringBuilder(); converter.format(event, sb); final String expected = "2011-12-30 10:56:35,987"; assertEquals(expected, sb.toString()); }
@Test public void testFormatLogEventStringBuilderIso8601() { final LogEvent event = new MyLogEvent(); final DatePatternConverter converter = DatePatternConverter.newInstance(ISO8601_FORMAT_OPTIONS); final StringBuilder sb = new StringBuilder(); converter.format(event, sb); final String expected = "2011-12-30T10:56:35,987"; assertEquals(expected, sb.toString()); }