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 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.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]>
> >
> >
>
>

Reply via email to