Skip to content

Commit 42306f9

Browse files
Fix: colored output is lost with 25.7.0 (besu-eth#9250)
* Fix colored output in terminal Signed-off-by: Jintu Das <jintuisbusy@gmail.com> * Update CHANGELOG Signed-off-by: Jintu Das <jintuisbusy@gmail.com> --------- Signed-off-by: Jintu Das <jintuisbusy@gmail.com> Co-authored-by: Sally MacFarlane <macfarla.github@gmail.com>
1 parent 4d2d585 commit 42306f9

File tree

2 files changed

+24
-4
lines changed

2 files changed

+24
-4
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
### Additions and Improvements
1818

1919
### Bug fixes
20+
- Fix loss of colored output in terminal when using `--color-enabled=true` option [#8908](https://github.com/hyperledger/besu/issues/8908)
2021

2122
## 25.10.0-RC2
2223
This RC is a pre-release, recommended update for Holesky and Sepolia users for the Fusaka hardfork.

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)