@Test public void testLevelNamesBad() { String colorName = "red"; final String[] options = { "%-5level: %msg", PatternParser.NO_CONSOLE_NO_ANSI + "=false, " + PatternParser.DISABLE_ANSI + "=false, " + "BAD_LEVEL_A=" + colorName + ", BAD_LEVEL_B=" + colorName }; final HighlightConverter converter = HighlightConverter.newInstance(null, options); Assert.assertNotNull(converter); Assert.assertNotNull(converter.getLevelStyle(Level.TRACE)); Assert.assertNotNull(converter.getLevelStyle(Level.DEBUG)); }
@Test public void testAnsiEmpty() { final String[] options = {"", PatternParser.NO_CONSOLE_NO_ANSI + "=false, " + PatternParser.DISABLE_ANSI + "=false"}; final HighlightConverter converter = HighlightConverter.newInstance(null, options); final LogEvent event = Log4jLogEvent.newBuilder().setLevel(Level.INFO).setLoggerName("a.b.c").setMessage( new SimpleMessage("message in a bottle")).build(); final StringBuilder buffer = new StringBuilder(); converter.format(event, buffer); assertEquals("", buffer.toString()); }
/** * Gets an instance of the class. * * @param config The current Configuration. * @param options pattern options, may be null. If first element is "short", only the first line of the * throwable will be formatted. * @return instance of class. */ public static HighlightConverter newInstance(final Configuration config, final String[] options) { if (options.length < 1) { LOGGER.error("Incorrect number of options on style. Expected at least 1, received " + options.length); return null; } if (options[0] == null) { LOGGER.error("No pattern supplied on style"); return null; } final PatternParser parser = PatternLayout.createPatternParser(config); final List<PatternFormatter> formatters = parser.parse(options[0]); final boolean disableAnsi = Arrays.toString(options).contains(PatternParser.DISABLE_ANSI + "=true"); final boolean noConsoleNoAnsi = Arrays.toString(options).contains(PatternParser.NO_CONSOLE_NO_ANSI + "=true"); final boolean hideAnsi = disableAnsi || (noConsoleNoAnsi && System.console() == null); return new HighlightConverter(formatters, createLevelStyleMap(options), hideAnsi); }
@Test public void testAnsiNonEmpty() { final String[] options = {"%-5level: %msg", PatternParser.NO_CONSOLE_NO_ANSI + "=false, " + PatternParser.DISABLE_ANSI + "=false"}; final HighlightConverter converter = HighlightConverter.newInstance(null, options); final LogEvent event = Log4jLogEvent.newBuilder().setLevel(Level.INFO).setLoggerName("a.b.c").setMessage( new SimpleMessage("message in a bottle")).build(); final StringBuilder buffer = new StringBuilder(); converter.format(event, buffer); assertEquals("\u001B[32mINFO : message in a bottle\u001B[m", buffer.toString()); }
@Test public void testNoAnsiEmpty() { final String[] options = {"", PatternParser.DISABLE_ANSI + "=true"}; final HighlightConverter converter = HighlightConverter.newInstance(null, options); final LogEvent event = Log4jLogEvent.newBuilder().setLevel(Level.INFO).setLoggerName("a.b.c").setMessage( new SimpleMessage("message in a bottle")).build(); final StringBuilder buffer = new StringBuilder(); converter.format(event, buffer); assertEquals("", buffer.toString()); }
@Test public void testLevelNamesNone() { final String[] options = { "%-5level: %msg", PatternParser.NO_CONSOLE_NO_ANSI + "=false, " + PatternParser.DISABLE_ANSI + "=false" }; final HighlightConverter converter = HighlightConverter.newInstance(null, options); Assert.assertNotNull(converter); Assert.assertNotNull(converter.getLevelStyle(Level.TRACE)); Assert.assertNotNull(converter.getLevelStyle(Level.DEBUG)); }
@Test public void testNoAnsiNonEmpty() { final String[] options = {"%-5level: %msg", PatternParser.DISABLE_ANSI + "=true"}; final HighlightConverter converter = HighlightConverter.newInstance(null, options); final LogEvent event = Log4jLogEvent.newBuilder().setLevel(Level.INFO).setLoggerName("a.b.c").setMessage( new SimpleMessage("message in a bottle")).build(); final StringBuilder buffer = new StringBuilder(); converter.format(event, buffer); assertEquals("INFO : message in a bottle", buffer.toString()); } }
@Test public void testLevelNamesGood() { String colorName = "red"; final String[] options = { "%-5level: %msg", PatternParser.NO_CONSOLE_NO_ANSI + "=false, " + PatternParser.DISABLE_ANSI + "=false, " + "DEBUG=" + colorName + ", TRACE=" + colorName }; final HighlightConverter converter = HighlightConverter.newInstance(null, options); Assert.assertNotNull(converter); Assert.assertEquals(AnsiEscape.createSequence(colorName), converter.getLevelStyle(Level.TRACE)); Assert.assertEquals(AnsiEscape.createSequence(colorName), converter.getLevelStyle(Level.DEBUG)); }