IgnoreException doesn’t fit: We’re not going to use Jansi by default, so the 
user needs a way to explicitly request Jansi somehow. 

Gary expressed a preference for configuration over system properties hence the 
idea of `loadJansi` or `enableJansi` as a ConsoleAppender attribute. But we can 
keep it a system property. 

 

> On Oct 25, 2017, at 12:22, Matt Sicker <[email protected]> wrote:
> 
> We have an ignoreExceptions option for when exceptions are thrown while
> appending a log event. Why not add another for ignoring exceptions thrown
> during construction of the plugin? It should ideally be filterable based on
> at least the exception supertype, but any sort of filter like that could be
> useful in power user scenarios as well.
> 
>> On 24 October 2017 at 22:07, Gary Gregory <[email protected]> wrote:
>> 
>> On Tue, Oct 24, 2017 at 5:47 PM, Remko Popma <[email protected]>
>> wrote:
>> 
>>> Mikael, I also don’t like the negative properties.
>>> 
>>> Gary, we could remove the `log4j.skipJansi` system property altogether
>> and
>>> instead have an explicit ConsoleAppender config attribute like
>> `loadJansi`
>>> (or something).
>>> 
>> 
>> This still feels weird. Are we going to end up with loadJacksonJson,
>> loadJacksonYaml, loadThis, and loadThat?
>> 
>> Would be possible to instead say something like ignoreDependencyExceptions?
>> 
>> Gary
>> 
>>> 
>>> 
>>> Note by the way that `disableAnsi` is for all ANSI escape codes and is
>> not
>>> directly related to the Jansi library.
>>> 
>>> 
>>> 
>>>> On Oct 25, 2017, at 4:40, Mikael Ståldal <[email protected]> wrote:
>>>> 
>>>> If we are going to rename it, I would like to invert it to
>>> "log4j2.enableJansi" (default false). I think negative properties with
>> true
>>> default are confusing.
>>>> 
>>>> 
>>>>> On 2017-10-24 15:04, Remko Popma wrote:
>>>>> 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.
>> ConsoleAppenderAnsiMessagesMai
>>> n
>>>>>>> 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.
>> ConsoleAppenderAnsiStyleJira18
>>> 0Main
>>>>>>> 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.
>> ConsoleAppenderAnsiStyleJira31
>>> 9Main
>>>>>>> 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.
>> ConsoleAppenderAnsiStyleLayout
>>> Main
>>>>>>> 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 ConsoleAppenderAnsiStyleNameLa
>> youtMain
>>> {
>>>>>>>    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 ConsoleAppenderHighlightLayout
>> DefaultMain
>>> {
>>>>>>>    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.
>> ConsoleAppenderJAnsiMessageMai
>>> n
>>>>>>> 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.
>> ConsoleAppenderJAnsiXException
>>> Main
>>>>>>> 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.
>> ConsoleAppenderNoAnsiStyleLayo
>>> utMain
>>>>>>> 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]>
>>>> 
>>>> 
>>> 
>>> 
>> 
> 
> 
> 
> -- 
> Matt Sicker <[email protected]>

Reply via email to