You mean let’s replace all occurrences of `log4j.skipJansi` with `log4j2.skipJansi`, in both code and documentation?
> On Oct 24, 2017, at 14:03, Matt Sicker <[email protected]> wrote: > > Can you use the new system property naming scheme? This would be > log4j2.skipJansi. That property would work regardless with the new system > properties parser thing, though the documentation should be more consistent > now. > >> On 23 October 2017 at 22:14, <[email protected]> wrote: >> >> Repository: logging-log4j2 >> Updated Branches: >> refs/heads/master 00823bd95 -> 73efe3dcf >> >> >> LOG4J2-2087 Jansi now needs to be enabled explicitly (by setting system >> property `log4j.skipJansi` to `false`). To avoid causing problems for web >> applications, Log4j will no longer automatically try to load Jansi without >> explicit configuration. >> >> >> Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo >> Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/ >> commit/73efe3dc >> Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/73efe3dc >> Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/73efe3dc >> >> Branch: refs/heads/master >> Commit: 73efe3dcf6787e66177a6485271362c5f989e014 >> Parents: 00823bd >> Author: rpopma <[email protected]> >> Authored: Tue Oct 24 12:13:56 2017 +0900 >> Committer: rpopma <[email protected]> >> Committed: Tue Oct 24 12:13:56 2017 +0900 >> >> ---------------------------------------------------------------------- >> .../log4j/core/appender/ConsoleAppender.java | 10 ++-- >> .../log4j/core/layout/PatternLayout.java | 16 +++++-- >> .../ConsoleAppenderAnsiMessagesMain.java | 3 +- >> .../ConsoleAppenderAnsiStyleJira180Main.java | 3 +- >> .../ConsoleAppenderAnsiStyleJira272Main.java | 1 + >> .../ConsoleAppenderAnsiStyleJira319Main.java | 3 +- >> .../ConsoleAppenderAnsiStyleLayoutMain.java | 3 +- >> .../ConsoleAppenderAnsiStyleNameLayoutMain.java | 1 + >> ...nsoleAppenderHighlightLayoutDefaultMain.java | 1 + >> .../ConsoleAppenderHighlightLayoutMain.java | 1 + >> .../ConsoleAppenderJAnsiMessageMain.java | 7 +-- >> .../ConsoleAppenderJAnsiXExceptionMain.java | 7 +-- >> .../ConsoleAppenderNoAnsiStyleLayoutMain.java | 2 +- >> .../log4j/core/pattern/StyleConverterTest.java | 6 +++ >> src/changes/changes.xml | 3 ++ >> src/site/xdoc/manual/layouts.xml.vm | 48 ++++++++++++-------- >> 16 files changed, 76 insertions(+), 39 deletions(-) >> ---------------------------------------------------------------------- >> >> >> http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/ >> 73efe3dc/log4j-core/src/main/java/org/apache/logging/log4j/ >> core/appender/ConsoleAppender.java >> ---------------------------------------------------------------------- >> diff --git >> a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/ConsoleAppender.java >> b/log4j-core/src/main/java/org/apache/logging/log4j/core/ >> appender/ConsoleAppender.java >> index bd2dc16..90d16e6 100644 >> --- a/log4j-core/src/main/java/org/apache/logging/log4j/core/ >> appender/ConsoleAppender.java >> +++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/ >> appender/ConsoleAppender.java >> @@ -67,7 +67,7 @@ public final class ConsoleAppender extends >> AbstractOutputStreamAppender<OutputSt >> * Enumeration of console destinations. >> */ >> public enum Target { >> - >> + >> /** Standard output. */ >> SYSTEM_OUT { >> @Override >> @@ -76,7 +76,7 @@ public final class ConsoleAppender extends >> AbstractOutputStreamAppender<OutputSt >> return getCharset("sun.stdout.encoding", >> Charset.defaultCharset()); >> } >> }, >> - >> + >> /** Standard error output. */ >> SYSTEM_ERR { >> @Override >> @@ -85,9 +85,9 @@ public final class ConsoleAppender extends >> AbstractOutputStreamAppender<OutputSt >> return getCharset("sun.stderr.encoding", >> Charset.defaultCharset()); >> } >> }; >> - >> + >> public abstract Charset getDefaultCharset(); >> - >> + >> protected Charset getCharset(final String property, Charset >> defaultCharset) { >> return new PropertiesUtil(PropertiesUtil. >> getSystemProperties()).getCharsetProperty(property, defaultCharset); >> } >> @@ -260,7 +260,7 @@ public final class ConsoleAppender extends >> AbstractOutputStreamAppender<OutputSt >> throw new IllegalStateException("Unsupported default >> encoding " + enc, ex); >> } >> final PropertiesUtil propsUtil = PropertiesUtil.getProperties(); >> - if (!propsUtil.isOsWindows() || >> propsUtil.getBooleanProperty("log4j.skipJansi") >> || direct) { >> + if (!propsUtil.isOsWindows() || >> propsUtil.getBooleanProperty("log4j.skipJansi", >> true) || direct) { >> return outputStream; >> } >> try { >> >> http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/ >> 73efe3dc/log4j-core/src/main/java/org/apache/logging/log4j/ >> core/layout/PatternLayout.java >> ---------------------------------------------------------------------- >> diff --git >> a/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/PatternLayout.java >> b/log4j-core/src/main/java/org/apache/logging/log4j/core/ >> layout/PatternLayout.java >> index e4440eb..a6b3a88 100644 >> --- a/log4j-core/src/main/java/org/apache/logging/log4j/core/ >> layout/PatternLayout.java >> +++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/ >> layout/PatternLayout.java >> @@ -38,6 +38,7 @@ import org.apache.logging.log4j.core.pattern. >> LogEventPatternConverter; >> import org.apache.logging.log4j.core.pattern.PatternFormatter; >> import org.apache.logging.log4j.core.pattern.PatternParser; >> import org.apache.logging.log4j.core.pattern.RegexReplacement; >> +import org.apache.logging.log4j.util.PropertiesUtil; >> import org.apache.logging.log4j.util.Strings; >> >> /** >> @@ -143,7 +144,7 @@ public final class PatternLayout extends >> AbstractStringLayout { >> >> /** >> * Deprecated, use {@link #newSerializerBuilder()} instead. >> - * >> + * >> * @param configuration >> * @param replace >> * @param pattern >> @@ -427,7 +428,7 @@ public final class PatternLayout extends >> AbstractStringLayout { >> } >> >> private static class PatternSelectorSerializer implements Serializer, >> Serializer2 { >> - >> + >> private final PatternSelector patternSelector; >> private final RegexReplacement replace; >> >> @@ -535,7 +536,7 @@ public final class PatternLayout extends >> AbstractStringLayout { >> private boolean alwaysWriteExceptions = true; >> >> @PluginBuilderAttribute >> - private boolean disableAnsi; >> + private boolean disableAnsi = !useAnsiEscapeCodes(); >> >> @PluginBuilderAttribute >> private boolean noConsoleNoAnsi; >> @@ -549,6 +550,12 @@ public final class PatternLayout extends >> AbstractStringLayout { >> private Builder() { >> } >> >> + private boolean useAnsiEscapeCodes() { >> + PropertiesUtil propertiesUtil = PropertiesUtil.getProperties() >> ; >> + boolean isPlatformSupportsAnsi = >> !propertiesUtil.isOsWindows(); >> + boolean isJansiRequested = !propertiesUtil. >> getBooleanProperty("log4j.skipJansi", true); >> + return isPlatformSupportsAnsi || isJansiRequested; >> + } >> >> /** >> * @param pattern >> @@ -609,7 +616,8 @@ public final class PatternLayout extends >> AbstractStringLayout { >> >> /** >> * @param disableAnsi >> - * If {@code "true"} (default is false), do not output >> ANSI escape codes >> + * If {@code "true"} (default is value of system property >> `log4j.skipJansi`, or `true` if undefined), >> + * do not output ANSI escape codes >> */ >> public Builder withDisableAnsi(final boolean disableAnsi) { >> this.disableAnsi = disableAnsi; >> >> http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/ >> 73efe3dc/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/ >> ConsoleAppenderAnsiMessagesMain.java >> ---------------------------------------------------------------------- >> diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/ >> appender/ConsoleAppenderAnsiMessagesMain.java b/log4j-core/src/test/java/ >> org/apache/logging/log4j/core/appender/ConsoleAppenderAnsiMessagesMai >> n.java >> index f8ea731..f74ab1b 100644 >> --- a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/ >> ConsoleAppenderAnsiMessagesMain.java >> +++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/ >> ConsoleAppenderAnsiMessagesMain.java >> @@ -29,7 +29,7 @@ import org.apache.logging.log4j.core. >> config.Configurator; >> * <p> >> * Running from a Windows command line from the root of the project: >> * </p> >> - * >> + * >> * <pre> >> * java -classpath log4j-core\target\test-classes;log4j-core\target\ >> classes;log4j-api\target\classes;%HOME%\.m2\repository\ >> org\fusesource\jansi\jansi\1.14\jansi-1.14.jar; >> org.apache.logging.log4j.core.appender.ConsoleAppenderAnsiMessagesMain >> log4j-core/target/test-classes/log4j2-console.xml >> * </pre> >> @@ -39,6 +39,7 @@ public class ConsoleAppenderAnsiMessagesMain { >> private static final Logger LOG = LogManager.getLogger( >> ConsoleAppenderAnsiMessagesMain.class); >> >> public static void main(final String[] args) { >> + System.setProperty("log4j.skipJansi", "false"); // LOG4J2-2087: >> explicitly enable >> try (final LoggerContext ctx = Configurator.initialize( >> ConsoleAppenderAnsiMessagesMain.class.getName(), >> "target/test-classes/log4j2-console.xml")) { >> LOG.fatal("\u001b[1;35mFatal message.\u001b[0m"); >> >> http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/ >> 73efe3dc/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/ >> ConsoleAppenderAnsiStyleJira180Main.java >> ---------------------------------------------------------------------- >> diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/ >> appender/ConsoleAppenderAnsiStyleJira180Main.java >> b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/ >> ConsoleAppenderAnsiStyleJira180Main.java >> index 5a7fcee..5bb815d 100644 >> --- a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/ >> ConsoleAppenderAnsiStyleJira180Main.java >> +++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/ >> ConsoleAppenderAnsiStyleJira180Main.java >> @@ -27,7 +27,7 @@ import org.apache.logging.log4j.core. >> config.Configurator; >> * <p> >> * Running from a Windows command line from the root of the project: >> * </p> >> - * >> + * >> * <pre> >> * java -classpath log4j-core\target\test-classes;log4j-core\target\ >> classes;log4j-api\target\classes;%HOME%\.m2\repository\ >> org\fusesource\jansi\jansi\1.14\jansi-1.14.jar; >> org.apache.logging.log4j.core.appender.ConsoleAppenderAnsiStyleJira180Main >> log4j-core/target/test-classes/log4j2-180.xml >> * </pre> >> @@ -37,6 +37,7 @@ public class ConsoleAppenderAnsiStyleJira180Main { >> private static final Logger LOG = LogManager.getLogger( >> ConsoleAppenderAnsiStyleJira180Main.class); >> >> public static void main(final String[] args) { >> + System.setProperty("log4j.skipJansi", "false"); // LOG4J2-2087: >> explicitly enable >> // System.out.println(System.getProperty("java.class.path")); >> final String config = args.length == 0 ? >> "target/test-classes/log4j2-180.xml" : args[0]; >> try (final LoggerContext ctx = Configurator.initialize( >> ConsoleAppenderAnsiMessagesMain.class.getName(), >> >> http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/ >> 73efe3dc/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/ >> ConsoleAppenderAnsiStyleJira272Main.java >> ---------------------------------------------------------------------- >> diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/ >> appender/ConsoleAppenderAnsiStyleJira272Main.java >> b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/ >> ConsoleAppenderAnsiStyleJira272Main.java >> index 9889f46..8c8aaa9 100644 >> --- a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/ >> ConsoleAppenderAnsiStyleJira272Main.java >> +++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/ >> ConsoleAppenderAnsiStyleJira272Main.java >> @@ -36,6 +36,7 @@ public class ConsoleAppenderAnsiStyleJira272Main { >> private static final Logger LOG = LogManager.getLogger( >> ConsoleAppenderAnsiStyleJira272Main.class); >> >> public static void main(final String[] args) { >> + System.setProperty("log4j.skipJansi", "false"); // LOG4J2-2087: >> explicitly enable >> // System.out.println(System.getProperty("java.class.path")); >> final String config = args.length == 0 ? >> "target/test-classes/log4j2-272.xml" : args[0]; >> try (final LoggerContext ctx = Configurator.initialize( >> ConsoleAppenderAnsiMessagesMain.class.getName(), config)) { >> >> http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/ >> 73efe3dc/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/ >> ConsoleAppenderAnsiStyleJira319Main.java >> ---------------------------------------------------------------------- >> diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/ >> appender/ConsoleAppenderAnsiStyleJira319Main.java >> b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/ >> ConsoleAppenderAnsiStyleJira319Main.java >> index 54ad06c..9d62101 100644 >> --- a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/ >> ConsoleAppenderAnsiStyleJira319Main.java >> +++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/ >> ConsoleAppenderAnsiStyleJira319Main.java >> @@ -27,7 +27,7 @@ import org.apache.logging.log4j.core. >> config.Configurator; >> * <p> >> * Running from a Windows command line from the root of the project: >> * </p> >> - * >> + * >> * <pre> >> * java -classpath log4j-core\target\test-classes;log4j-core\target\ >> classes;log4j-api\target\classes;%HOME%\.m2\repository\ >> org\fusesource\jansi\jansi\1.14\jansi-1.14.jar; >> org.apache.logging.log4j.core.appender.ConsoleAppenderAnsiStyleJira319Main >> log4j-core/target/test-classes/log4j2-319.xml >> * </pre> >> @@ -37,6 +37,7 @@ public class ConsoleAppenderAnsiStyleJira319Main { >> private static final Logger LOG = LogManager.getLogger( >> ConsoleAppenderAnsiStyleJira319Main.class); >> >> public static void main(final String[] args) { >> + System.setProperty("log4j.skipJansi", "false"); // LOG4J2-2087: >> explicitly enable >> // System.out.println(System.getProperty("java.class.path")); >> final String config = args.length == 0 ? >> "target/test-classes/log4j2-319.xml" : args[0]; >> try (final LoggerContext ctx = Configurator.initialize( >> ConsoleAppenderAnsiMessagesMain.class.getName(), >> >> http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/ >> 73efe3dc/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/ >> ConsoleAppenderAnsiStyleLayoutMain.java >> ---------------------------------------------------------------------- >> diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/ >> appender/ConsoleAppenderAnsiStyleLayoutMain.java >> b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/ >> ConsoleAppenderAnsiStyleLayoutMain.java >> index 5e3bb0f..758b13e 100644 >> --- a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/ >> ConsoleAppenderAnsiStyleLayoutMain.java >> +++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/ >> ConsoleAppenderAnsiStyleLayoutMain.java >> @@ -38,7 +38,7 @@ import org.junit.Test; >> * <pre> >> * java -classpath log4j-core\target\test-classes;log4j-core\target\ >> classes;log4j-api\target\classes;%HOME%\.m2\repository\ >> org\fusesource\jansi\jansi\1.14\jansi-1.14.jar; >> org.apache.logging.log4j.core.appender.ConsoleAppenderAnsiStyleLayoutMain >> log4j-core/target/test-classes/log4j2-console-style-ansi.xml >> * </pre> >> - * >> + * >> */ >> public class ConsoleAppenderAnsiStyleLayoutMain { >> >> @@ -55,6 +55,7 @@ public class ConsoleAppenderAnsiStyleLayoutMain { >> } >> >> public void test(final String[] args) { >> + System.setProperty("log4j.skipJansi", "false"); // LOG4J2-2087: >> explicitly enable >> // System.out.println(System.getProperty("java.class.path")); >> final String config = args == null || args.length == 0 ? >> "target/test-classes/log4j2-console-style-ansi.xml" >> : args[0]; >> >> http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/ >> 73efe3dc/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/ >> ConsoleAppenderAnsiStyleNameLayoutMain.java >> ---------------------------------------------------------------------- >> diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/ >> appender/ConsoleAppenderAnsiStyleNameLayoutMain.java >> b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/ >> ConsoleAppenderAnsiStyleNameLayoutMain.java >> index 4a2b26a..09f111b 100644 >> --- a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/ >> ConsoleAppenderAnsiStyleNameLayoutMain.java >> +++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/ >> ConsoleAppenderAnsiStyleNameLayoutMain.java >> @@ -32,6 +32,7 @@ public class ConsoleAppenderAnsiStyleNameLayoutMain { >> private static final Logger LOG = LogManager.getLogger( >> ConsoleAppenderAnsiStyleNameLayoutMain.class); >> >> public static void main(final String[] args) { >> + System.setProperty("log4j.skipJansi", "false"); // LOG4J2-2087: >> explicitly enable >> try (final LoggerContext ctx = Configurator.initialize( >> ConsoleAppenderAnsiMessagesMain.class.getName(), >> "target/test-classes/log4j2-console-style-name-ansi.xml")) >> { >> LOG.fatal("Fatal message."); >> >> http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/ >> 73efe3dc/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/ >> ConsoleAppenderHighlightLayoutDefaultMain.java >> ---------------------------------------------------------------------- >> diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/ >> appender/ConsoleAppenderHighlightLayoutDefaultMain.java >> b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/ >> ConsoleAppenderHighlightLayoutDefaultMain.java >> index 4c3339d..16afa9b 100644 >> --- a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/ >> ConsoleAppenderHighlightLayoutDefaultMain.java >> +++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/ >> ConsoleAppenderHighlightLayoutDefaultMain.java >> @@ -32,6 +32,7 @@ public class ConsoleAppenderHighlightLayoutDefaultMain { >> private static final Logger LOG = LogManager.getLogger( >> ConsoleAppenderHighlightLayoutDefaultMain.class); >> >> public static void main(final String[] args) { >> + System.setProperty("log4j.skipJansi", "false"); // LOG4J2-2087: >> explicitly enable >> try (final LoggerContext ctx = Configurator.initialize( >> ConsoleAppenderAnsiMessagesMain.class.getName(), >> "target/test-classes/log4j2- >> console-highlight-default.xml")) { >> LOG.fatal("Fatal message."); >> >> http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/ >> 73efe3dc/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/ >> ConsoleAppenderHighlightLayoutMain.java >> ---------------------------------------------------------------------- >> diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/ >> appender/ConsoleAppenderHighlightLayoutMain.java >> b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/ >> ConsoleAppenderHighlightLayoutMain.java >> index 0ca7e8d..34c4355 100644 >> --- a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/ >> ConsoleAppenderHighlightLayoutMain.java >> +++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/ >> ConsoleAppenderHighlightLayoutMain.java >> @@ -32,6 +32,7 @@ public class ConsoleAppenderHighlightLayoutMain { >> private static final Logger LOG = LogManager.getLogger( >> ConsoleAppenderHighlightLayoutMain.class); >> >> public static void main(final String[] args) { >> + System.setProperty("log4j.skipJansi", "false"); // LOG4J2-2087: >> explicitly enable >> try (final LoggerContext ctx = Configurator.initialize( >> ConsoleAppenderAnsiMessagesMain.class.getName(), >> "target/test-classes/log4j2-console-highlight.xml")) { >> LOG.fatal("Fatal message."); >> >> http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/ >> 73efe3dc/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/ >> ConsoleAppenderJAnsiMessageMain.java >> ---------------------------------------------------------------------- >> diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/ >> appender/ConsoleAppenderJAnsiMessageMain.java b/log4j-core/src/test/java/ >> org/apache/logging/log4j/core/appender/ConsoleAppenderJAnsiMessageMai >> n.java >> index 6e54505..f800806 100644 >> --- a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/ >> ConsoleAppenderJAnsiMessageMain.java >> +++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/ >> ConsoleAppenderJAnsiMessageMain.java >> @@ -40,13 +40,13 @@ import org.junit.experimental.categories.Category; >> * <pre> >> * mvn -Dtest=org.apache.logging.log4j.core.appender. >> ConsoleAppenderJAnsiMessageMain test >> * </pre> >> - * >> + * >> * or, on Windows: >> - * >> + * >> * <pre> >> * java -classpath log4j-core\target\test-classes;log4j-core\target\ >> classes;log4j-api\target\classes;%USERPROFILE%\.m2\ >> repository\org\fusesource\jansi\jansi\1.14\jansi-1.14.jar; >> org.apache.logging.log4j.core.appender.ConsoleAppenderJAnsiMessageMain >> log4j-core/src/test/resources/log4j2-console-msg-ansi.xml >> * </pre> >> - * >> + * >> */ >> @Category(Layouts.Jansi.class) >> public class ConsoleAppenderJAnsiMessageMain { >> @@ -64,6 +64,7 @@ public class ConsoleAppenderJAnsiMessageMain { >> } >> >> public void test(final String[] args) { >> + System.setProperty("log4j.skipJansi", "false"); // LOG4J2-2087: >> explicitly enable >> // System.out.println(System.getProperty("java.class.path")); >> final String config = args == null || args.length == 0 ? >> "target/test-classes/log4j2-console-msg-ansi.xml" >> : args[0]; >> >> http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/ >> 73efe3dc/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/ >> ConsoleAppenderJAnsiXExceptionMain.java >> ---------------------------------------------------------------------- >> diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/ >> appender/ConsoleAppenderJAnsiXExceptionMain.java >> b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/ >> ConsoleAppenderJAnsiXExceptionMain.java >> index 7780a1d..34901ff 100644 >> --- a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/ >> ConsoleAppenderJAnsiXExceptionMain.java >> +++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/ >> ConsoleAppenderJAnsiXExceptionMain.java >> @@ -37,13 +37,13 @@ import org.junit.experimental.categories.Category; >> * <pre> >> * mvn -Dtest=org.apache.logging.log4j.core.appender. >> ConsoleAppenderJAnsiXExceptionMain test >> * </pre> >> - * >> + * >> * or, on Windows: >> - * >> + * >> * <pre> >> * java -classpath log4j-core\target\test-classes;log4j-core\target\ >> classes;log4j-api\target\classes;%USERPROFILE%\.m2\ >> repository\org\fusesource\jansi\jansi\1.14\jansi-1.14.jar; >> org.apache.logging.log4j.core.appender.ConsoleAppenderJAnsiXExceptionMain >> log4j-core/src/test/resources/log4j2-console-xex-ansi.xml >> * </pre> >> - * >> + * >> */ >> @Category(Layouts.Jansi.class) >> public class ConsoleAppenderJAnsiXExceptionMain { >> @@ -61,6 +61,7 @@ public class ConsoleAppenderJAnsiXExceptionMain { >> } >> >> public void test(final String[] args) { >> + System.setProperty("log4j.skipJansi", "false"); // LOG4J2-2087: >> explicitly enable >> // System.out.println(System.getProperty("java.class.path")); >> final String config = args == null || args.length == 0 ? >> "target/test-classes/log4j2-console-xex-ansi.xml" >> : args[0]; >> >> http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/ >> 73efe3dc/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/ >> ConsoleAppenderNoAnsiStyleLayoutMain.java >> ---------------------------------------------------------------------- >> diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/ >> appender/ConsoleAppenderNoAnsiStyleLayoutMain.java >> b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/ >> ConsoleAppenderNoAnsiStyleLayoutMain.java >> index bb08de4..3bc22d1 100644 >> --- a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/ >> ConsoleAppenderNoAnsiStyleLayoutMain.java >> +++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/ >> ConsoleAppenderNoAnsiStyleLayoutMain.java >> @@ -29,7 +29,7 @@ import org.apache.logging.log4j.core. >> config.Configurator; >> * <p> >> * Running from a Windows command line from the root of the project: >> * </p> >> - * >> + * >> * <pre> >> * java -classpath log4j-core\target\test-classes;log4j-core\target\ >> classes;log4j-api\target\classes;%HOME%\.m2\repository\ >> org\fusesource\jansi\jansi\1.14\jansi-1.14.jar; >> org.apache.logging.log4j.core.appender.ConsoleAppenderNoAnsiStyleLayoutMain >> log4j-core/target/test-classes/log4j2-console-style-ansi.xml >> * </pre> >> >> http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/ >> 73efe3dc/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/ >> StyleConverterTest.java >> ---------------------------------------------------------------------- >> diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/ >> pattern/StyleConverterTest.java b/log4j-core/src/test/java/ >> org/apache/logging/log4j/core/pattern/StyleConverterTest.java >> index ea62885..248fdc3 100644 >> --- a/log4j-core/src/test/java/org/apache/logging/log4j/core/ >> pattern/StyleConverterTest.java >> +++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/ >> pattern/StyleConverterTest.java >> @@ -24,6 +24,7 @@ import org.apache.logging.log4j.test. >> appender.ListAppender; >> import org.apache.logging.log4j.util.Strings; >> import org.junit.Assert; >> import org.junit.Before; >> +import org.junit.BeforeClass; >> import org.junit.Rule; >> import org.junit.Test; >> >> @@ -38,6 +39,11 @@ public class StyleConverterTest { >> "\u001B[1;31mERROR\u001B[m \u001B[1;36mLoggerTest\u001B[m >> o.a.l.l.c.p.StyleConverterTest org.apache.logging.log4j.core. >> pattern.StyleConverterTest" >> + Strings.LINE_SEPARATOR; >> >> + @BeforeClass >> + public static void beforeClass() { >> + System.setProperty("log4j.skipJansi", "false"); // LOG4J2-2087: >> explicitly enable >> + } >> + >> @Rule >> public LoggerContextRule init = new LoggerContextRule("log4j- >> style.xml"); >> >> >> http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/ >> 73efe3dc/src/changes/changes.xml >> ---------------------------------------------------------------------- >> diff --git a/src/changes/changes.xml b/src/changes/changes.xml >> index b8d560e..9dbdd75 100644 >> --- a/src/changes/changes.xml >> +++ b/src/changes/changes.xml >> @@ -31,6 +31,9 @@ >> - "remove" - Removed >> --> >> <release version="2.10.0" date="2017-MM-DD" description="GA Release >> 2.10.0"> >> + <action issue="LOG4J2-2087" dev="rpopma" type="fix" due-to="Andy >> Gumbrecht"> >> + Jansi now needs to be enabled explicitly (by setting system >> property `log4j.skipJansi` to `false`). To avoid causing problems for web >> applications, Log4j will no longer automatically try to load Jansi without >> explicit configuration. >> + </action> >> <action issue="LOG4J2-2060" dev="rpopma" type="fix"> >> AbstractDatabaseManager should make a copy of LogEvents before >> holding references to them: AsyncLogger log events are mutable. >> </action> >> >> http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/ >> 73efe3dc/src/site/xdoc/manual/layouts.xml.vm >> ---------------------------------------------------------------------- >> diff --git a/src/site/xdoc/manual/layouts.xml.vm b/src/site/xdoc/manual/ >> layouts.xml.vm >> index d878a2e..1e8cfb3 100644 >> --- a/src/site/xdoc/manual/layouts.xml.vm >> +++ b/src/site/xdoc/manual/layouts.xml.vm >> @@ -912,17 +912,17 @@ WARN [main]: Message 2</pre> >> <p> >> Specifying <code>%throwable{none}</code> or >> <code>%throwable{0}</code> suppresses output of the exception. >> </p> >> - <p> >> - Use <code>filters(<i>packages</i>)</code> where >> <i>packages</i> is a list of package names to >> + <p> >> + Use <code>filters(<i>packages</i>)</code> where >> <i>packages</i> is a list of package names to >> suppress matching stack frames from stack traces. >> </p> >> <p> >> - Use a <code>separator</code> string to separate the >> lines of a stack trace. For example: >> - <code>separator(|)</code>. The default value is the >> <code>line.separator</code> system property, >> + Use a <code>separator</code> string to separate the >> lines of a stack trace. For example: >> + <code>separator(|)</code>. The default value is the >> <code>line.separator</code> system property, >> which is operating system dependent. >> </p> >> <p> >> - Use <code>ex{suffix(<i>pattern</i>)</code> to add the >> output of <i>pattern</i> to the output only >> + Use <code>ex{suffix(<i>pattern</i>)</code> to add the >> output of <i>pattern</i> to the output only >> when there is a throwable to print. >> </p> >> </td> >> @@ -944,6 +944,7 @@ WARN [main]: Message 2</pre> >> </td> >> <td> >> <p>Adds ANSI colors to the result of the enclosed pattern >> based on the current event's logging level. >> + (See Jansi <a href="#enable-jansi">configuration</a>.) >> </p> >> <p>The default colors for each level are: >> <table> >> @@ -1164,7 +1165,8 @@ WARN [main]: Message 2</pre> >> </p> >> <!-- Copied and tweaked from Javadoc for >> org.apache.logging.log4j.core.pattern.JAnsiMessageRenderer --> >> <p> >> - Add <code>{ansi}</code> to render messages with ANSI >> escape codes (requires JAnsi.) >> + Add <code>{ansi}</code> to render messages with ANSI >> escape codes (requires JAnsi, >> + see <a href="#enable-jansi">configuration</a>.) >> </p> >> <p> >> The default syntax for embedded ANSI codes is: >> @@ -1379,23 +1381,23 @@ WARN [main]: Message 2</pre> >> </p> >> <p> >> The throwable conversion word can be followed by an >> option in the form >> - <code>%rEx{short}</code> which will only output the >> first line of the Throwable or >> + <code>%rEx{short}</code> which will only output the >> first line of the Throwable or >> <code>%rEx{n}</code> where the first n lines of the >> stack trace will be printed. >> </p> >> - <p> >> + <p> >> Specifying <code>%rEx{none}</code> or >> <code>%rEx{0}</code> will suppress printing of the exception. >> </p> >> - <p> >> - Use <code>filters(<i>packages</i>)</code> where >> <i>packages</i> is a list of package names to >> + <p> >> + Use <code>filters(<i>packages</i>)</code> where >> <i>packages</i> is a list of package names to >> suppress matching stack frames from stack traces. >> </p> >> <p> >> - Use a <code>separator</code> string to separate the >> lines of a stack trace. For example: >> - <code>separator(|)</code>. The default value is the >> <code>line.separator</code> system property, >> + Use a <code>separator</code> string to separate the >> lines of a stack trace. For example: >> + <code>separator(|)</code>. The default value is the >> <code>line.separator</code> system property, >> which is operating system dependent. >> </p> >> <p> >> - Use <code>rEx{suffix(<i>pattern</i>)</code> to add the >> output of <i>pattern</i> to the output only >> + Use <code>rEx{suffix(<i>pattern</i>)</code> to add the >> output of <i>pattern</i> to the output only >> when there is a throwable to print. >> </p> >> </td> >> @@ -1418,6 +1420,7 @@ WARN [main]: Message 2</pre> >> <td> >> <p>Uses ANSI escape sequences to style the result of the >> enclosed pattern. The style can consist of >> a comma separated list of style names from the >> following table. >> + (See Jansi <a href="#enable-jansi">configuration</a>.) >> <table> >> <tr> >> <th>Style Name</th> >> @@ -1645,17 +1648,18 @@ WARN [main]: Message 2</pre> >> the first n lines of the stack trace will be printed. >> Specifying <code>%xEx{none}</code> >> or <code>%xEx{0}</code> will suppress printing of the >> exception. >> </p> >> - <p> >> - Use <code>filters(<i>packages</i>)</code> where >> <i>packages</i> is a list of package names to >> + <p> >> + Use <code>filters(<i>packages</i>)</code> where >> <i>packages</i> is a list of package names to >> suppress matching stack frames from stack traces. >> </p> >> <p> >> - Use a <code>separator</code> string to separate the >> lines of a stack trace. For example: >> - <code>separator(|)</code>. The default value is the >> <code>line.separator</code> system property, >> + Use a <code>separator</code> string to separate the >> lines of a stack trace. For example: >> + <code>separator(|)</code>. The default value is the >> <code>line.separator</code> system property, >> which is operating system dependent. >> </p> >> <p> >> The <code>ansi</code> option renders stack traces with >> ANSI escapes code using the JAnsi library. >> + (See <a href="#enable-jansi">configuration</a>.) >> Use <code>{ansi}</code> to use the default color >> mapping. You can specify your own mappings with >> <code>key=value</code> pairs. The keys are: >> </p> >> @@ -1821,11 +1825,17 @@ WARN [main]: Message 2</pre> >> </tr> >> <caption align="top">Pattern Converters</caption> >> </table> >> + <a name="enable-jansi"></a> >> <h4>ANSI Styling on Windows</h4> >> <p>ANSI escape sequences are supported natively on many >> platforms but are not by default on Windows. To >> - enable ANSI support simply add the <a href=" >> http://jansi.fusesource.org/">Jansi</a> jar to your >> - application and Log4j will automatically make use of it when >> writing to the console. >> + enable ANSI support add the <a href="http://jansi.fusesource. >> org/">Jansi</a> jar to your application >> + and set property <code>log4j.skipJansi</code> to >> <code>false</code>. >> + This allows Log4j to use Jansi to add ANSI escape codes when >> writing to the console. >> </p> >> + <p>NOTE: Prior to Log4j 2.10, Jansi was enabled by default. The >> fact that Jansi requires native code >> + means that Jansi can only be loaded by a single class >> loader. For web applications this means the >> + Jansi jar has to be in the web container's classpath. To >> avoid causing problems for web applications, >> + Log4j will no longer automatically try to load Jansi >> without explicit configuration from Log4j 2.10 onward.</p> >> <h4>Example Patterns</h4> >> <h5>Filtered Throwables</h5> >> <p>This example shows how to filter out classes from >> unimportant packages in stack traces. >> >> > > > -- > Matt Sicker <[email protected]>
