Skip to content

Commit 1fd68ae

Browse files
committed
Merge pull request #34749 from Abhijeetmishr
* pr/34749: Polish "Add support for additional colors in Log4j2 and Logback" Add support for additional colors in Log4j2 and Logback Closes gh-34749
2 parents e7647a6 + 6cf08a3 commit 1fd68ae

File tree

4 files changed

+163
-3
lines changed

4 files changed

+163
-3
lines changed

spring-boot-project/spring-boot/src/main/java/org/springframework/boot/logging/log4j2/ColorConverter.java

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2012-2019 the original author or authors.
2+
* Copyright 2012-2023 the original author or authors.
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -53,13 +53,23 @@ public final class ColorConverter extends LogEventPatternConverter {
5353

5454
static {
5555
Map<String, AnsiElement> ansiElements = new HashMap<>();
56+
ansiElements.put("black", AnsiColor.BLACK);
57+
ansiElements.put("white", AnsiColor.WHITE);
5658
ansiElements.put("faint", AnsiStyle.FAINT);
5759
ansiElements.put("red", AnsiColor.RED);
5860
ansiElements.put("green", AnsiColor.GREEN);
5961
ansiElements.put("yellow", AnsiColor.YELLOW);
6062
ansiElements.put("blue", AnsiColor.BLUE);
6163
ansiElements.put("magenta", AnsiColor.MAGENTA);
6264
ansiElements.put("cyan", AnsiColor.CYAN);
65+
ansiElements.put("bright_black", AnsiColor.BRIGHT_BLACK);
66+
ansiElements.put("bright_white", AnsiColor.BRIGHT_WHITE);
67+
ansiElements.put("bright_red", AnsiColor.BRIGHT_RED);
68+
ansiElements.put("bright_green", AnsiColor.BRIGHT_GREEN);
69+
ansiElements.put("bright_yellow", AnsiColor.BRIGHT_YELLOW);
70+
ansiElements.put("bright_blue", AnsiColor.BRIGHT_BLUE);
71+
ansiElements.put("bright_magenta", AnsiColor.BRIGHT_MAGENTA);
72+
ansiElements.put("bright_cyan", AnsiColor.BRIGHT_CYAN);
6373
ELEMENTS = Collections.unmodifiableMap(ansiElements);
6474
}
6575

spring-boot-project/spring-boot/src/main/java/org/springframework/boot/logging/logback/ColorConverter.java

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2012-2019 the original author or authors.
2+
* Copyright 2012-2023 the original author or authors.
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -43,13 +43,23 @@ public class ColorConverter extends CompositeConverter<ILoggingEvent> {
4343

4444
static {
4545
Map<String, AnsiElement> ansiElements = new HashMap<>();
46+
ansiElements.put("black", AnsiColor.BLACK);
47+
ansiElements.put("white", AnsiColor.WHITE);
4648
ansiElements.put("faint", AnsiStyle.FAINT);
4749
ansiElements.put("red", AnsiColor.RED);
4850
ansiElements.put("green", AnsiColor.GREEN);
4951
ansiElements.put("yellow", AnsiColor.YELLOW);
5052
ansiElements.put("blue", AnsiColor.BLUE);
5153
ansiElements.put("magenta", AnsiColor.MAGENTA);
5254
ansiElements.put("cyan", AnsiColor.CYAN);
55+
ansiElements.put("bright_black", AnsiColor.BRIGHT_BLACK);
56+
ansiElements.put("bright_white", AnsiColor.BRIGHT_WHITE);
57+
ansiElements.put("bright_red", AnsiColor.BRIGHT_RED);
58+
ansiElements.put("bright_green", AnsiColor.BRIGHT_GREEN);
59+
ansiElements.put("bright_yellow", AnsiColor.BRIGHT_YELLOW);
60+
ansiElements.put("bright_blue", AnsiColor.BRIGHT_BLUE);
61+
ansiElements.put("bright_magenta", AnsiColor.BRIGHT_MAGENTA);
62+
ansiElements.put("bright_cyan", AnsiColor.BRIGHT_CYAN);
5363
ELEMENTS = Collections.unmodifiableMap(ansiElements);
5464
}
5565

spring-boot-project/spring-boot/src/test/java/org/springframework/boot/logging/log4j2/ColorConverterTests.java

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,20 @@ private ColorConverter newConverter(String styling) {
5757
return ColorConverter.newInstance(null, new String[] { this.in, styling });
5858
}
5959

60+
@Test
61+
void black() {
62+
StringBuilder output = new StringBuilder();
63+
newConverter("black").format(this.event, output);
64+
assertThat(output).hasToString("\033[30min\033[0;39m");
65+
}
66+
67+
@Test
68+
void white() {
69+
StringBuilder output = new StringBuilder();
70+
newConverter("white").format(this.event, output);
71+
assertThat(output).hasToString("\033[37min\033[0;39m");
72+
}
73+
6074
@Test
6175
void faint() {
6276
StringBuilder output = new StringBuilder();
@@ -106,6 +120,62 @@ void cyan() {
106120
assertThat(output).hasToString("\033[36min\033[0;39m");
107121
}
108122

123+
@Test
124+
void brightBlack() {
125+
StringBuilder output = new StringBuilder();
126+
newConverter("bright_black").format(this.event, output);
127+
assertThat(output).hasToString("\033[90min\033[0;39m");
128+
}
129+
130+
@Test
131+
void brightWhite() {
132+
StringBuilder output = new StringBuilder();
133+
newConverter("bright_white").format(this.event, output);
134+
assertThat(output).hasToString("\033[97min\033[0;39m");
135+
}
136+
137+
@Test
138+
void brightRed() {
139+
StringBuilder output = new StringBuilder();
140+
newConverter("bright_red").format(this.event, output);
141+
assertThat(output).hasToString("\033[91min\033[0;39m");
142+
}
143+
144+
@Test
145+
void brightGreen() {
146+
StringBuilder output = new StringBuilder();
147+
newConverter("bright_green").format(this.event, output);
148+
assertThat(output).hasToString("\033[92min\033[0;39m");
149+
}
150+
151+
@Test
152+
void brightYellow() {
153+
StringBuilder output = new StringBuilder();
154+
newConverter("bright_yellow").format(this.event, output);
155+
assertThat(output).hasToString("\033[93min\033[0;39m");
156+
}
157+
158+
@Test
159+
void brightBlue() {
160+
StringBuilder output = new StringBuilder();
161+
newConverter("bright_blue").format(this.event, output);
162+
assertThat(output).hasToString("\033[94min\033[0;39m");
163+
}
164+
165+
@Test
166+
void brightMagenta() {
167+
StringBuilder output = new StringBuilder();
168+
newConverter("bright_magenta").format(this.event, output);
169+
assertThat(output).hasToString("\033[95min\033[0;39m");
170+
}
171+
172+
@Test
173+
void brightCyan() {
174+
StringBuilder output = new StringBuilder();
175+
newConverter("bright_cyan").format(this.event, output);
176+
assertThat(output).hasToString("\033[96min\033[0;39m");
177+
}
178+
109179
@Test
110180
void highlightFatal() {
111181
this.event.setLevel(Level.FATAL);

spring-boot-project/spring-boot/src/test/java/org/springframework/boot/logging/logback/ColorConverterTests.java

Lines changed: 71 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2012-2019 the original author or authors.
2+
* Copyright 2012-2023 the original author or authors.
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -51,6 +51,20 @@ static void resetAnsi() {
5151
AnsiOutput.setEnabled(AnsiOutput.Enabled.DETECT);
5252
}
5353

54+
@Test
55+
void black() {
56+
this.converter.setOptionList(Collections.singletonList("black"));
57+
String out = this.converter.transform(this.event, this.in);
58+
assertThat(out).isEqualTo("\033[30min\033[0;39m");
59+
}
60+
61+
@Test
62+
void white() {
63+
this.converter.setOptionList(Collections.singletonList("white"));
64+
String out = this.converter.transform(this.event, this.in);
65+
assertThat(out).isEqualTo("\033[37min\033[0;39m");
66+
}
67+
5468
@Test
5569
void faint() {
5670
this.converter.setOptionList(Collections.singletonList("faint"));
@@ -100,6 +114,62 @@ void cyan() {
100114
assertThat(out).isEqualTo("\033[36min\033[0;39m");
101115
}
102116

117+
@Test
118+
void brightBlack() {
119+
this.converter.setOptionList(Collections.singletonList("bright_black"));
120+
String out = this.converter.transform(this.event, this.in);
121+
assertThat(out).isEqualTo("\033[90min\033[0;39m");
122+
}
123+
124+
@Test
125+
void brightWhite() {
126+
this.converter.setOptionList(Collections.singletonList("bright_white"));
127+
String out = this.converter.transform(this.event, this.in);
128+
assertThat(out).isEqualTo("\033[97min\033[0;39m");
129+
}
130+
131+
@Test
132+
void brightRed() {
133+
this.converter.setOptionList(Collections.singletonList("bright_red"));
134+
String out = this.converter.transform(this.event, this.in);
135+
assertThat(out).isEqualTo("\033[91min\033[0;39m");
136+
}
137+
138+
@Test
139+
void brightGreen() {
140+
this.converter.setOptionList(Collections.singletonList("bright_green"));
141+
String out = this.converter.transform(this.event, this.in);
142+
assertThat(out).isEqualTo("\033[92min\033[0;39m");
143+
}
144+
145+
@Test
146+
void brightYellow() {
147+
this.converter.setOptionList(Collections.singletonList("bright_yellow"));
148+
String out = this.converter.transform(this.event, this.in);
149+
assertThat(out).isEqualTo("\033[93min\033[0;39m");
150+
}
151+
152+
@Test
153+
void brightBlue() {
154+
this.converter.setOptionList(Collections.singletonList("bright_blue"));
155+
String out = this.converter.transform(this.event, this.in);
156+
assertThat(out).isEqualTo("\033[94min\033[0;39m");
157+
}
158+
159+
@Test
160+
void brightMagenta() {
161+
this.converter.setOptionList(Collections.singletonList("bright_magenta"));
162+
String out = this.converter.transform(this.event, this.in);
163+
assertThat(out).isEqualTo("\033[95min\033[0;39m");
164+
}
165+
166+
@Test
167+
void brightCyan() {
168+
this.converter.setOptionList(Collections.singletonList("bright_cyan"));
169+
String out = this.converter.transform(this.event, this.in);
170+
assertThat(out).isEqualTo("\033[96min\033[0;39m");
171+
}
172+
103173
@Test
104174
void highlightError() {
105175
this.event.setLevel(Level.ERROR);

0 commit comments

Comments
 (0)