Skip to content
Merged
Show file tree
Hide file tree
Changes from 7 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
- Use Eclipse Temurin OpenJDK JRE in Besu docker image [#9392](https://github.com/hyperledger/besu/pull/9392)

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

## 25.11.0

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ public Configuration reconfigure() {
new XmlExtensionConfiguration(
refreshedParent.getLoggerContext(),
refreshedParent.getConfigurationSource().resetInputStream());
createConsoleAppender();
refreshed.createConsoleAppender();
return refreshed;
} catch (final IOException e) {
LoggerFactory.getLogger(Logger.ROOT_LOGGER_NAME)
Expand Down Expand Up @@ -90,11 +90,12 @@ private void createConsoleAppender() {
return;
}

final boolean colorEnabled = getColorEnabled();
final PatternLayout patternLayout =
PatternLayout.newBuilder()
.withConfiguration(this)
.withDisableAnsi(!BesuCommand.getColorEnabled().orElse(!noColorSet()))
.withNoConsoleNoAnsi(!BesuCommand.getColorEnabled().orElse(false))
.withDisableAnsi(!colorEnabled)
.withNoConsoleNoAnsi(!colorEnabled)
.withPattern(
String.join(
SEP,
Expand All @@ -105,11 +106,29 @@ private void createConsoleAppender() {
colorize("%msgc%n%throwable")))
.build();
final ConsoleAppender consoleAppender =
ConsoleAppender.newBuilder().setName("Console").setLayout(patternLayout).build();
ConsoleAppender.newBuilder()
.setName("Console")
.setTarget(ConsoleAppender.Target.SYSTEM_OUT)
.setLayout(patternLayout)
.build();
consoleAppender.start();

// Remove existing Console appender if present to avoid duplicate output
if (this.getRootLogger().getAppenders().containsKey("Console")) {
this.getRootLogger().removeAppender("Console");
}

this.getRootLogger().addAppender(consoleAppender, null, null);
}

private boolean getColorEnabled() {
try {
return BesuCommand.getColorEnabled().orElse(!noColorSet());
} catch (NoClassDefFoundError | ExceptionInInitializerError e) {
return !noColorSet();
}
}

private static boolean noColorSet() {
return System.getenv("NO_COLOR") != null;
}
Expand Down