Skip to content

Commit 713ec50

Browse files
authored
Remove JANSI dependency (#2916)
This commit: - Removes support for the outdated [Jansi 1.x](http://fusesource.github.io/jansi/) version in `Console` appender. - Rewrites `JAnsiTextRenderer`, use in the `%m{ansi}` and `%ex{ansi}` pattern converters to use our internal ANSI support instead of Jansi. Fixes #1736.
1 parent 878962e commit 713ec50

File tree

46 files changed

+531
-897
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

46 files changed

+531
-897
lines changed

log4j-core-test/pom.xml

-7
Original file line numberDiff line numberDiff line change
@@ -182,13 +182,6 @@
182182
<optional>true</optional>
183183
</dependency>
184184

185-
<!-- Required for console color support in Windows -->
186-
<dependency>
187-
<groupId>org.fusesource.jansi</groupId>
188-
<artifactId>jansi</artifactId>
189-
<optional>true</optional>
190-
</dependency>
191-
192185
<dependency>
193186
<groupId>org.junit.jupiter</groupId>
194187
<artifactId>junit-jupiter-engine</artifactId>

log4j-core-test/src/main/java/org/apache/logging/log4j/core/test/TestConstants.java

-2
Original file line numberDiff line numberDiff line change
@@ -67,8 +67,6 @@ private TestConstants() {}
6767

6868
public static final String CONFIGURATION_USE_PRECISE_CLOCK = CONFIGURATION + "usePreciseClock";
6969

70-
public static final String CONSOLE_JANSI_ENABLED = "log4j.console.jansiEnabled";
71-
7270
private static final String GC = "log4j.gc.";
7371

7472
public static final String GC_ENABLE_DIRECT_ENCODERS = GC + "enableDirectEncoders";

log4j-core-test/src/main/java/org/apache/logging/log4j/core/test/categories/Layouts.java

-2
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,4 @@
2121
*/
2222
public interface Layouts {
2323
interface Csv {}
24-
25-
interface Jansi {}
2624
}

log4j-core-test/src/main/resources/Log4j-config.xsd

+2-2
Original file line numberDiff line numberDiff line change
@@ -696,15 +696,15 @@
696696
<annotation>
697697
<documentation>
698698
Write directly to java.io.FileDescriptor and bypass java.lang.System.out/.err. Can give up to 10x performance boost when the
699-
output is redirected to file or other process. Cannot be used with Jansi on Windows. Cannot be used with follow.
699+
output is redirected to file or other process. Cannot be used with follow.
700700
</documentation>
701701
</annotation>
702702
</attribute>
703703
<attribute name="follow" type="tns:BooleanType">
704704
<annotation>
705705
<documentation>
706706
Identifies whether the appender honors reassignments of System.out or System.err via System.setOut or System.setErr made after
707-
configuration. Note that the follow attribute cannot be used with Jansi on Windows. Cannot be used with direct.
707+
configuration. Cannot be used with direct.
708708
</documentation>
709709
</annotation>
710710
</attribute>

log4j-core-test/src/test/java/org/apache/logging/log4j/core/appender/ConsoleAppenderAnsiMessagesMain.java

+2-3
Original file line numberDiff line numberDiff line change
@@ -30,16 +30,15 @@
3030
* </p>
3131
*
3232
* <pre>
33-
* 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
33+
* java -classpath log4j-core\target\test-classes;log4j-core\target\classes;log4j-api\target\classes org.apache.logging.log4j.core.appender.ConsoleAppenderAnsiMessagesMain log4j-core/target/test-classes/log4j2-console.xml
3434
* </pre>
3535
*/
3636
public class ConsoleAppenderAnsiMessagesMain {
3737

3838
private static final Logger LOG = LogManager.getLogger(ConsoleAppenderAnsiMessagesMain.class);
3939

4040
public static void main(final String[] args) {
41-
System.setProperty("log4j.skipJansi", "false"); // LOG4J2-2087: explicitly enable
42-
try (final LoggerContext ctx = Configurator.initialize(
41+
try (final LoggerContext ignored = Configurator.initialize(
4342
ConsoleAppenderAnsiMessagesMain.class.getName(), "target/test-classes/log4j2-console.xml")) {
4443
LOG.fatal("\u001b[1;35mFatal message.\u001b[0m");
4544
LOG.error("\u001b[1;31mError message.\u001b[0m");

log4j-core-test/src/test/java/org/apache/logging/log4j/core/appender/ConsoleAppenderAnsiStyleJira180Main.java

+3-5
Original file line numberDiff line numberDiff line change
@@ -23,24 +23,22 @@
2323
import org.apache.logging.log4j.core.config.Configurator;
2424

2525
/**
26-
* Tests https://issues.apache.org/jira/browse/LOG4J2-180
26+
* Tests <a href="https://issues.apache.org/jira/browse/LOG4J2-180">LOG4J2-180</a>
2727
* <p>
2828
* Running from a Windows command line from the root of the project:
2929
* </p>
3030
*
3131
* <pre>
32-
* 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
32+
* java -classpath log4j-core\target\test-classes;log4j-core\target\classes;log4j-api\target\classes org.apache.logging.log4j.core.appender.ConsoleAppenderAnsiStyleJira180Main log4j-core/target/test-classes/log4j2-180.xml
3333
* </pre>
3434
*/
3535
public class ConsoleAppenderAnsiStyleJira180Main {
3636

3737
private static final Logger LOG = LogManager.getLogger(ConsoleAppenderAnsiStyleJira180Main.class);
3838

3939
public static void main(final String[] args) {
40-
System.setProperty("log4j.skipJansi", "false"); // LOG4J2-2087: explicitly enable
41-
// System.out.println(System.getProperty("java.class.path"));
4240
final String config = args.length == 0 ? "target/test-classes/log4j2-180.xml" : args[0];
43-
try (final LoggerContext ctx =
41+
try (final LoggerContext ignored =
4442
Configurator.initialize(ConsoleAppenderAnsiMessagesMain.class.getName(), config)) {
4543
LOG.fatal("Fatal message.");
4644
LOG.error("Error message.");

log4j-core-test/src/test/java/org/apache/logging/log4j/core/appender/ConsoleAppenderAnsiStyleJira272Main.java

+3-5
Original file line numberDiff line numberDiff line change
@@ -23,23 +23,21 @@
2323
import org.apache.logging.log4j.core.config.Configurator;
2424

2525
/**
26-
* Tests https://issues.apache.org/jira/browse/LOG4J2-272
26+
* Tests <a href="https://issues.apache.org/jira/browse/LOG4J2-272">LOG4J2-272</a>
2727
* <p>
2828
* Running from a Windows command line from the root of the project:
2929
* </p>
3030
* <pre>
31-
* 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.ConsoleAppenderAnsiStyleJira272Main log4j-core/target/test-classes/log4j2-272.xml
31+
* java -classpath log4j-core\target\test-classes;log4j-core\target\classes;log4j-api\target\classes org.apache.logging.log4j.core.appender.ConsoleAppenderAnsiStyleJira272Main log4j-core/target/test-classes/log4j2-272.xml
3232
* </pre>
3333
*/
3434
public class ConsoleAppenderAnsiStyleJira272Main {
3535

3636
private static final Logger LOG = LogManager.getLogger(ConsoleAppenderAnsiStyleJira272Main.class);
3737

3838
public static void main(final String[] args) {
39-
System.setProperty("log4j.skipJansi", "false"); // LOG4J2-2087: explicitly enable
40-
// System.out.println(System.getProperty("java.class.path"));
4139
final String config = args.length == 0 ? "target/test-classes/log4j2-272.xml" : args[0];
42-
try (final LoggerContext ctx =
40+
try (final LoggerContext ignored =
4341
Configurator.initialize(ConsoleAppenderAnsiMessagesMain.class.getName(), config)) {
4442
LOG.fatal("Fatal message.");
4543
LOG.error("Error message.");

log4j-core-test/src/test/java/org/apache/logging/log4j/core/appender/ConsoleAppenderAnsiStyleJira319Main.java

+3-5
Original file line numberDiff line numberDiff line change
@@ -23,24 +23,22 @@
2323
import org.apache.logging.log4j.core.config.Configurator;
2424

2525
/**
26-
* Tests https://issues.apache.org/jira/browse/LOG4J2-319
26+
* Tests <a href="https://issues.apache.org/jira/browse/LOG4J2-319">LOG4J2-319</a>
2727
* <p>
2828
* Running from a Windows command line from the root of the project:
2929
* </p>
3030
*
3131
* <pre>
32-
* 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
32+
* java -classpath log4j-core\target\test-classes;log4j-core\target\classes;log4j-api\target\classes org.apache.logging.log4j.core.appender.ConsoleAppenderAnsiStyleJira319Main log4j-core/target/test-classes/log4j2-319.xml
3333
* </pre>
3434
*/
3535
public class ConsoleAppenderAnsiStyleJira319Main {
3636

3737
private static final Logger LOG = LogManager.getLogger(ConsoleAppenderAnsiStyleJira319Main.class);
3838

3939
public static void main(final String[] args) {
40-
System.setProperty("log4j.skipJansi", "false"); // LOG4J2-2087: explicitly enable
41-
// System.out.println(System.getProperty("java.class.path"));
4240
final String config = args.length == 0 ? "target/test-classes/log4j2-319.xml" : args[0];
43-
try (final LoggerContext ctx =
41+
try (final LoggerContext ignored =
4442
Configurator.initialize(ConsoleAppenderAnsiMessagesMain.class.getName(), config)) {
4543
LOG.fatal("Fatal message.");
4644
LOG.error("Error message.");

log4j-core-test/src/test/java/org/apache/logging/log4j/core/appender/ConsoleAppenderAnsiStyleLayoutMain.java

+2-4
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@
3535
* </pre>
3636
* or:
3737
* <pre>
38-
* 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
38+
* java -classpath log4j-core\target\test-classes;log4j-core\target\classes;log4j-api\target\classes org.apache.logging.log4j.core.appender.ConsoleAppenderAnsiStyleLayoutMain log4j-core/target/test-classes/log4j2-console-style-ansi.xml
3939
* </pre>
4040
*
4141
*/
@@ -54,11 +54,9 @@ public void test() {
5454
}
5555

5656
public void test(final String[] args) {
57-
System.setProperty("log4j.skipJansi", "false"); // LOG4J2-2087: explicitly enable
58-
// System.out.println(System.getProperty("java.class.path"));
5957
final String config =
6058
args == null || args.length == 0 ? "target/test-classes/log4j2-console-style-ansi.xml" : args[0];
61-
try (final LoggerContext ctx =
59+
try (final LoggerContext ignored =
6260
Configurator.initialize(ConsoleAppenderAnsiMessagesMain.class.getName(), config)) {
6361
final Logger logger = LogManager.getLogger(ConsoleAppenderAnsiStyleLayoutMain.class);
6462
logger.fatal("Fatal message.");

log4j-core-test/src/test/java/org/apache/logging/log4j/core/appender/ConsoleAppenderAnsiStyleNameLayoutMain.java

+1-2
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,7 @@ public class ConsoleAppenderAnsiStyleNameLayoutMain {
3131
private static final Logger LOG = LogManager.getLogger(ConsoleAppenderAnsiStyleNameLayoutMain.class);
3232

3333
public static void main(final String[] args) {
34-
System.setProperty("log4j.skipJansi", "false"); // LOG4J2-2087: explicitly enable
35-
try (final LoggerContext ctx = Configurator.initialize(
34+
try (final LoggerContext ignored = Configurator.initialize(
3635
ConsoleAppenderAnsiMessagesMain.class.getName(),
3736
"target/test-classes/log4j2-console-style-name-ansi.xml")) {
3837
LOG.fatal("Fatal message.");

log4j-core-test/src/test/java/org/apache/logging/log4j/core/appender/ConsoleAppenderJAnsiXExceptionMain.java log4j-core-test/src/test/java/org/apache/logging/log4j/core/appender/ConsoleAppenderAnsiXExceptionMain.java

+5-10
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,7 @@
2222
import org.apache.logging.log4j.Logger;
2323
import org.apache.logging.log4j.core.LoggerContext;
2424
import org.apache.logging.log4j.core.config.Configurator;
25-
import org.apache.logging.log4j.core.test.categories.Layouts;
2625
import org.junit.Test;
27-
import org.junit.experimental.categories.Category;
2826

2927
/**
3028
* Shows how to use ANSI escape codes to color messages. Each message is printed to the console in color, but the rest
@@ -34,21 +32,20 @@
3432
* </p>
3533
*
3634
* <pre>
37-
* mvn -Dtest=org.apache.logging.log4j.core.appender.ConsoleAppenderJAnsiXExceptionMain test
35+
* mvn -Dtest=org.apache.logging.log4j.core.appender.ConsoleAppenderAnsiXExceptionMain test
3836
* </pre>
3937
*
4038
* or, on Windows:
4139
*
4240
* <pre>
43-
* 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
41+
* java -classpath log4j-core\target\test-classes;log4j-core\target\classes;log4j-api\target\classes org.apache.logging.log4j.core.appender.ConsoleAppenderAnsiXExceptionMain log4j-core/src/test/resources/log4j2-console-xex-ansi.xml
4442
* </pre>
4543
*
4644
*/
47-
@Category(Layouts.Jansi.class)
48-
public class ConsoleAppenderJAnsiXExceptionMain {
45+
public class ConsoleAppenderAnsiXExceptionMain {
4946

5047
public static void main(final String[] args) {
51-
new ConsoleAppenderJAnsiXExceptionMain().test(args);
48+
new ConsoleAppenderAnsiXExceptionMain().test(args);
5249
}
5350

5451
/**
@@ -60,12 +57,10 @@ public void test() {
6057
}
6158

6259
public void test(final String[] args) {
63-
System.setProperty("log4j.skipJansi", "false"); // LOG4J2-2087: explicitly enable
64-
// System.out.println(System.getProperty("java.class.path"));
6560
final String config =
6661
args == null || args.length == 0 ? "target/test-classes/log4j2-console-xex-ansi.xml" : args[0];
6762
final LoggerContext ctx = Configurator.initialize(ConsoleAppenderAnsiMessagesMain.class.getName(), config);
68-
final Logger logger = LogManager.getLogger(ConsoleAppenderJAnsiXExceptionMain.class);
63+
final Logger logger = LogManager.getLogger(ConsoleAppenderAnsiXExceptionMain.class);
6964
try {
7065
Files.getFileStore(Paths.get("?BOGUS?"));
7166
} catch (final Exception e) {

log4j-core-test/src/test/java/org/apache/logging/log4j/core/appender/ConsoleAppenderDefaultSuppressedThrowable.java

+4-7
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@
3131
* </p>
3232
*
3333
* <pre>
34-
* 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
34+
* java -classpath log4j-core\target\test-classes;log4j-core\target\classes;log4j-api\target\classes org.apache.logging.log4j.core.appender.ConsoleAppenderNoAnsiStyleLayoutMain log4j-core/target/test-classes/log4j2-console-style-ansi.xml
3535
* </pre>
3636
*/
3737
public class ConsoleAppenderDefaultSuppressedThrowable {
@@ -41,12 +41,11 @@ public class ConsoleAppenderDefaultSuppressedThrowable {
4141
public static void main(final String[] args) {
4242
final String config =
4343
args.length == 0 ? "target/test-classes/log4j2-console-default-suppressed-throwable.xml" : args[0];
44-
test(args, config);
44+
test(config);
4545
}
4646

47-
static void test(final String[] args, final String config) {
48-
// System.out.println(System.getProperty("java.class.path"));
49-
try (final LoggerContext ctx =
47+
static void test(final String config) {
48+
try (final LoggerContext ignored =
5049
Configurator.initialize(ConsoleAppenderDefaultSuppressedThrowable.class.getName(), config)) {
5150
final IOException ioEx = new IOException("test suppressed");
5251
ioEx.addSuppressed(new IOException("test suppressed 1", new IOException("test 1")));
@@ -55,8 +54,6 @@ static void test(final String[] args, final String config) {
5554
ioEx.addSuppressed(new IOException("test suppressed 2", ioEx2));
5655
final IOException e = new IOException("test", ioEx);
5756
LOG.error("Error message {}, suppressed?", "Hi", e);
58-
System.out.println("printStackTrace");
59-
e.printStackTrace();
6057
}
6158
}
6259
}

log4j-core-test/src/test/java/org/apache/logging/log4j/core/appender/ConsoleAppenderHighlightLayoutDefaultMain.java

+1-2
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,7 @@ public class ConsoleAppenderHighlightLayoutDefaultMain {
3131
private static final Logger LOG = LogManager.getLogger(ConsoleAppenderHighlightLayoutDefaultMain.class);
3232

3333
public static void main(final String[] args) {
34-
System.setProperty("log4j.skipJansi", "false"); // LOG4J2-2087: explicitly enable
35-
try (final LoggerContext ctx = Configurator.initialize(
34+
try (final LoggerContext ignored = Configurator.initialize(
3635
ConsoleAppenderAnsiMessagesMain.class.getName(),
3736
"target/test-classes/log4j2-console-highlight-default.xml")) {
3837
LOG.fatal("Fatal message.");

log4j-core-test/src/test/java/org/apache/logging/log4j/core/appender/ConsoleAppenderHighlightLayoutMain.java

+1-2
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,7 @@ public class ConsoleAppenderHighlightLayoutMain {
3131
private static final Logger LOG = LogManager.getLogger(ConsoleAppenderHighlightLayoutMain.class);
3232

3333
public static void main(final String[] args) {
34-
System.setProperty("log4j.skipJansi", "false"); // LOG4J2-2087: explicitly enable
35-
try (final LoggerContext ctx = Configurator.initialize(
34+
try (final LoggerContext ignored = Configurator.initialize(
3635
ConsoleAppenderAnsiMessagesMain.class.getName(), "target/test-classes/log4j2-console-highlight.xml")) {
3736
LOG.fatal("Fatal message.");
3837
LOG.error("Error message.");

log4j-core-test/src/test/java/org/apache/logging/log4j/core/appender/ConsoleAppenderJAnsiMessageMain.java

-84
This file was deleted.

log4j-core-test/src/test/java/org/apache/logging/log4j/core/appender/ConsoleAppenderJira1002ShortThrowableLayoutMain.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
*/
2222
public class ConsoleAppenderJira1002ShortThrowableLayoutMain {
2323

24-
public static void main(final String[] args) {
25-
ConsoleAppenderNoAnsiStyleLayoutMain.test(args, "target/test-classes/log4j2-1002.xml");
24+
public static void main() {
25+
ConsoleAppenderNoAnsiStyleLayoutMain.test("target/test-classes/log4j2-1002.xml");
2626
}
2727
}

0 commit comments

Comments
 (0)