Skip to content

Commit 35994bb

Browse files
Abhijeetmishrsnicoll
authored andcommitted
Add support for additional colors in Log4j2 and Logback
See gh-34749
1 parent e7647a6 commit 35994bb

File tree

4 files changed

+160
-0
lines changed

4 files changed

+160
-0
lines changed

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

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,16 @@ public final class ColorConverter extends LogEventPatternConverter {
6060
ansiElements.put("blue", AnsiColor.BLUE);
6161
ansiElements.put("magenta", AnsiColor.MAGENTA);
6262
ansiElements.put("cyan", AnsiColor.CYAN);
63+
ansiElements.put("white", AnsiColor.WHITE);
64+
ansiElements.put("black", AnsiColor.BLACK);
65+
ansiElements.put("bright_black", AnsiColor.BRIGHT_BLACK);
66+
ansiElements.put("bright_red", AnsiColor.BRIGHT_RED);
67+
ansiElements.put("bright_green", AnsiColor.BRIGHT_GREEN);
68+
ansiElements.put("bright_yellow", AnsiColor.BRIGHT_YELLOW);
69+
ansiElements.put("bright_blue", AnsiColor.BRIGHT_BLUE);
70+
ansiElements.put("bright_magenta", AnsiColor.BRIGHT_MAGENTA);
71+
ansiElements.put("bright_cyan", AnsiColor.BRIGHT_CYAN);
72+
ansiElements.put("bright_white", AnsiColor.BRIGHT_WHITE);
6373
ELEMENTS = Collections.unmodifiableMap(ansiElements);
6474
}
6575

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

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,16 @@ public class ColorConverter extends CompositeConverter<ILoggingEvent> {
5050
ansiElements.put("blue", AnsiColor.BLUE);
5151
ansiElements.put("magenta", AnsiColor.MAGENTA);
5252
ansiElements.put("cyan", AnsiColor.CYAN);
53+
ansiElements.put("white", AnsiColor.WHITE);
54+
ansiElements.put("black", AnsiColor.BLACK);
55+
ansiElements.put("bright_black", AnsiColor.BRIGHT_BLACK);
56+
ansiElements.put("bright_red", AnsiColor.BRIGHT_RED);
57+
ansiElements.put("bright_green", AnsiColor.BRIGHT_GREEN);
58+
ansiElements.put("bright_yellow", AnsiColor.BRIGHT_YELLOW);
59+
ansiElements.put("bright_blue", AnsiColor.BRIGHT_BLUE);
60+
ansiElements.put("bright_magenta", AnsiColor.BRIGHT_MAGENTA);
61+
ansiElements.put("bright_cyan", AnsiColor.BRIGHT_CYAN);
62+
ansiElements.put("bright_white", AnsiColor.BRIGHT_WHITE);
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
@@ -106,6 +106,76 @@ void cyan() {
106106
assertThat(output).hasToString("\033[36min\033[0;39m");
107107
}
108108

109+
@Test
110+
void white() {
111+
StringBuilder output = new StringBuilder();
112+
newConverter("white").format(this.event, output);
113+
assertThat(output).hasToString("\033[37min\033[0;39m");
114+
}
115+
116+
@Test
117+
void black() {
118+
StringBuilder output = new StringBuilder();
119+
newConverter("black").format(this.event, output);
120+
assertThat(output).hasToString("\033[30min\033[0;39m");
121+
}
122+
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 brightRed() {
132+
StringBuilder output = new StringBuilder();
133+
newConverter("bright_red").format(this.event, output);
134+
assertThat(output).hasToString("\033[91min\033[0;39m");
135+
}
136+
137+
@Test
138+
void brightGreen() {
139+
StringBuilder output = new StringBuilder();
140+
newConverter("bright_green").format(this.event, output);
141+
assertThat(output).hasToString("\033[92min\033[0;39m");
142+
}
143+
144+
@Test
145+
void brightYellow() {
146+
StringBuilder output = new StringBuilder();
147+
newConverter("bright_yellow").format(this.event, output);
148+
assertThat(output).hasToString("\033[93min\033[0;39m");
149+
}
150+
151+
@Test
152+
void brightBlue() {
153+
StringBuilder output = new StringBuilder();
154+
newConverter("bright_blue").format(this.event, output);
155+
assertThat(output).hasToString("\033[94min\033[0;39m");
156+
}
157+
158+
@Test
159+
void brightMagenta() {
160+
StringBuilder output = new StringBuilder();
161+
newConverter("bright_magenta").format(this.event, output);
162+
assertThat(output).hasToString("\033[95min\033[0;39m");
163+
}
164+
165+
@Test
166+
void brightCyan() {
167+
StringBuilder output = new StringBuilder();
168+
newConverter("bright_cyan").format(this.event, output);
169+
assertThat(output).hasToString("\033[96min\033[0;39m");
170+
}
171+
172+
@Test
173+
void brightWhite() {
174+
StringBuilder output = new StringBuilder();
175+
newConverter("bright_white").format(this.event, output);
176+
assertThat(output).hasToString("\033[97min\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: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,76 @@ void cyan() {
100100
assertThat(out).isEqualTo("\033[36min\033[0;39m");
101101
}
102102

103+
@Test
104+
void white() {
105+
this.converter.setOptionList(Collections.singletonList("white"));
106+
String out = this.converter.transform(this.event, this.in);
107+
assertThat(out).isEqualTo("\033[37min\033[0;39m");
108+
}
109+
110+
@Test
111+
void black() {
112+
this.converter.setOptionList(Collections.singletonList("black"));
113+
String out = this.converter.transform(this.event, this.in);
114+
assertThat(out).isEqualTo("\033[30min\033[0;39m");
115+
}
116+
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 brightRed() {
126+
this.converter.setOptionList(Collections.singletonList("bright_red"));
127+
String out = this.converter.transform(this.event, this.in);
128+
assertThat(out).isEqualTo("\033[91min\033[0;39m");
129+
}
130+
131+
@Test
132+
void brightGreen() {
133+
this.converter.setOptionList(Collections.singletonList("bright_green"));
134+
String out = this.converter.transform(this.event, this.in);
135+
assertThat(out).isEqualTo("\033[92min\033[0;39m");
136+
}
137+
138+
@Test
139+
void brightYellow() {
140+
this.converter.setOptionList(Collections.singletonList("bright_yellow"));
141+
String out = this.converter.transform(this.event, this.in);
142+
assertThat(out).isEqualTo("\033[93min\033[0;39m");
143+
}
144+
145+
@Test
146+
void brightBlue() {
147+
this.converter.setOptionList(Collections.singletonList("bright_blue"));
148+
String out = this.converter.transform(this.event, this.in);
149+
assertThat(out).isEqualTo("\033[94min\033[0;39m");
150+
}
151+
152+
@Test
153+
void brightMagenta() {
154+
this.converter.setOptionList(Collections.singletonList("bright_magenta"));
155+
String out = this.converter.transform(this.event, this.in);
156+
assertThat(out).isEqualTo("\033[95min\033[0;39m");
157+
}
158+
159+
@Test
160+
void brightCyan() {
161+
this.converter.setOptionList(Collections.singletonList("bright_cyan"));
162+
String out = this.converter.transform(this.event, this.in);
163+
assertThat(out).isEqualTo("\033[96min\033[0;39m");
164+
}
165+
166+
@Test
167+
void brightWhite() {
168+
this.converter.setOptionList(Collections.singletonList("bright_white"));
169+
String out = this.converter.transform(this.event, this.in);
170+
assertThat(out).isEqualTo("\033[97min\033[0;39m");
171+
}
172+
103173
@Test
104174
void highlightError() {
105175
this.event.setLevel(Level.ERROR);

0 commit comments

Comments
 (0)