Skip to content

Commit 024c5ab

Browse files
committed
Moved configuring of ConsoleAppender to AppenderUtils
1 parent 4bebb84 commit 024c5ab

2 files changed

Lines changed: 40 additions & 33 deletions

File tree

src/main/java/nl/altindag/log/LogCaptor.java

Lines changed: 2 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@
1818
import ch.qos.logback.classic.Level;
1919
import ch.qos.logback.classic.Logger;
2020
import ch.qos.logback.classic.spi.ILoggingEvent;
21-
import ch.qos.logback.core.Appender;
2221
import ch.qos.logback.core.ConsoleAppender;
2322
import ch.qos.logback.core.filter.Filter;
2423
import nl.altindag.log.appender.InMemoryAppender;
@@ -30,7 +29,6 @@
3029

3130
import java.util.Collections;
3231
import java.util.HashMap;
33-
import java.util.Iterator;
3432
import java.util.List;
3533
import java.util.Map;
3634
import java.util.Optional;
@@ -59,39 +57,10 @@ public final class LogCaptor implements AutoCloseable {
5957
private LogCaptor(String loggerName) {
6058
logger = LogbackUtils.getLogger(loggerName);
6159
inMemoryAppender = AppenderUtils.configureInMemoryAppender(logger, eventsCollector);
60+
consoleAppender = AppenderUtils.configureConsoleAppender(logger);
6261

6362
JavaUtilLoggingLoggerUtils.redirectToSlf4j(loggerName);
6463
logLevelContainer.putIfAbsent(logger.getName(), logger.getEffectiveLevel());
65-
66-
configureConsoleAppender(loggerName);
67-
}
68-
69-
private void configureConsoleAppender(String loggerName) {
70-
if (!ROOT_LOGGER_NAME.equals(loggerName)) {
71-
logger.setAdditive(false);
72-
}
73-
74-
consoleAppender = createConsoleAppender();
75-
if (!ROOT_LOGGER_NAME.equals(loggerName)) {
76-
boolean containsRootConsoleAppender = false;
77-
Iterator<Appender<ILoggingEvent>> rootAppenders = getRootLogger().iteratorForAppenders();
78-
while (rootAppenders.hasNext()) {
79-
if (rootAppenders.next() instanceof ConsoleAppender) {
80-
containsRootConsoleAppender = true;
81-
}
82-
}
83-
84-
if (containsRootConsoleAppender) {
85-
logger.addAppender(consoleAppender);
86-
}
87-
}
88-
}
89-
90-
private ConsoleAppender<ILoggingEvent> createConsoleAppender() {
91-
return Optional.ofNullable(consoleAppender)
92-
.orElseGet(() -> AppenderUtils.getConsoleAppender(getRootLogger())
93-
.orElseGet(() -> AppenderUtils.getConsoleAppender(logger)
94-
.orElseGet(() -> AppenderUtils.createConsoleAppender(logger.getLoggerContext()))));
9564
}
9665

9766
/**
@@ -282,7 +251,7 @@ public void reconfigure() {
282251
StreamSupport.stream(Spliterators.spliteratorUnknownSize(logger.iteratorForAppenders(), Spliterator.ORDERED), false)
283252
.forEach(logger::detachAppender);
284253

285-
configureConsoleAppender(logger.getName());
254+
consoleAppender = AppenderUtils.configureConsoleAppender(logger);
286255
logger.addAppender(inMemoryAppender);
287256
logger.addAppender(consoleAppender);
288257
inMemoryAppender.start();

src/main/java/nl/altindag/log/util/AppenderUtils.java

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,15 +19,19 @@
1919
import ch.qos.logback.classic.LoggerContext;
2020
import ch.qos.logback.classic.encoder.PatternLayoutEncoder;
2121
import ch.qos.logback.classic.spi.ILoggingEvent;
22+
import ch.qos.logback.core.Appender;
2223
import ch.qos.logback.core.ConsoleAppender;
2324
import ch.qos.logback.core.encoder.Encoder;
2425
import nl.altindag.log.appender.InMemoryAppender;
2526

2627
import java.util.Arrays;
28+
import java.util.Iterator;
2729
import java.util.List;
2830
import java.util.Objects;
2931
import java.util.Optional;
3032

33+
import static org.slf4j.Logger.ROOT_LOGGER_NAME;
34+
3135
public final class AppenderUtils {
3236

3337
public static final String CONSOLE_APPENDER_NAME = "console";
@@ -73,4 +77,38 @@ public static InMemoryAppender<ILoggingEvent> configureInMemoryAppender(Logger l
7377
return inMemoryAppender;
7478
}
7579

80+
public static ConsoleAppender<ILoggingEvent> configureConsoleAppender(Logger logger) {
81+
String loggerName = logger.getName();
82+
if (!ROOT_LOGGER_NAME.equals(loggerName)) {
83+
logger.setAdditive(false);
84+
}
85+
86+
ConsoleAppender<ILoggingEvent> consoleAppender = createConsoleAppender(logger, null);
87+
if (!ROOT_LOGGER_NAME.equals(loggerName)) {
88+
boolean containsRootConsoleAppender = false;
89+
Iterator<Appender<ILoggingEvent>> rootAppenders = getRootLogger(logger).iteratorForAppenders();
90+
while (rootAppenders.hasNext()) {
91+
if (rootAppenders.next() instanceof ConsoleAppender) {
92+
containsRootConsoleAppender = true;
93+
}
94+
}
95+
96+
if (containsRootConsoleAppender) {
97+
logger.addAppender(consoleAppender);
98+
}
99+
}
100+
return consoleAppender;
101+
}
102+
103+
private static ConsoleAppender<ILoggingEvent> createConsoleAppender(Logger logger, ConsoleAppender<ILoggingEvent> consoleAppender) {
104+
return Optional.ofNullable(consoleAppender)
105+
.orElseGet(() -> AppenderUtils.getConsoleAppender(getRootLogger(logger))
106+
.orElseGet(() -> AppenderUtils.getConsoleAppender(logger)
107+
.orElseGet(() -> AppenderUtils.createConsoleAppender(logger.getLoggerContext()))));
108+
}
109+
110+
private static Logger getRootLogger(Logger logger) {
111+
return logger.getLoggerContext().getLogger(ROOT_LOGGER_NAME);
112+
}
113+
76114
}

0 commit comments

Comments
 (0)