Skip to content

Commit a782209

Browse files
committed
Fix colored output in terminal
Signed-off-by: Jintu Das <jintuisbusy@gmail.com>
1 parent ff6f9a4 commit a782209

File tree

1 file changed

+23
-4
lines changed

1 file changed

+23
-4
lines changed

app/src/main/java/org/hyperledger/besu/cli/logging/XmlExtensionConfiguration.java

Lines changed: 23 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ public Configuration reconfigure() {
6262
new XmlExtensionConfiguration(
6363
refreshedParent.getLoggerContext(),
6464
refreshedParent.getConfigurationSource().resetInputStream());
65-
createConsoleAppender();
65+
refreshed.createConsoleAppender();
6666
return refreshed;
6767
} catch (final IOException e) {
6868
LoggerFactory.getLogger(Logger.ROOT_LOGGER_NAME)
@@ -90,11 +90,12 @@ private void createConsoleAppender() {
9090
return;
9191
}
9292

93+
final boolean colorEnabled = getColorEnabled();
9394
final PatternLayout patternLayout =
9495
PatternLayout.newBuilder()
9596
.withConfiguration(this)
96-
.withDisableAnsi(!BesuCommand.getColorEnabled().orElse(!noColorSet()))
97-
.withNoConsoleNoAnsi(!BesuCommand.getColorEnabled().orElse(false))
97+
.withDisableAnsi(!colorEnabled)
98+
.withNoConsoleNoAnsi(!colorEnabled)
9899
.withPattern(
99100
String.join(
100101
SEP,
@@ -105,11 +106,29 @@ private void createConsoleAppender() {
105106
colorize("%msgc%n%throwable")))
106107
.build();
107108
final ConsoleAppender consoleAppender =
108-
ConsoleAppender.newBuilder().setName("Console").setLayout(patternLayout).build();
109+
ConsoleAppender.newBuilder()
110+
.setName("Console")
111+
.setTarget(ConsoleAppender.Target.SYSTEM_ERR)
112+
.setLayout(patternLayout)
113+
.build();
109114
consoleAppender.start();
115+
116+
// Remove existing Console appender if present to avoid duplicate output
117+
if (this.getRootLogger().getAppenders().containsKey("Console")) {
118+
this.getRootLogger().removeAppender("Console");
119+
}
120+
110121
this.getRootLogger().addAppender(consoleAppender, null, null);
111122
}
112123

124+
private boolean getColorEnabled() {
125+
try {
126+
return BesuCommand.getColorEnabled().orElse(!noColorSet());
127+
} catch (NoClassDefFoundError | ExceptionInInitializerError e) {
128+
return !noColorSet();
129+
}
130+
}
131+
113132
private static boolean noColorSet() {
114133
return System.getenv("NO_COLOR") != null;
115134
}

0 commit comments

Comments
 (0)