Skip to content

Commit 27f8d1c

Browse files
committed
Applied AI recommendation
1 parent 18244f7 commit 27f8d1c

3 files changed

Lines changed: 52 additions & 33 deletions

File tree

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

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -28,12 +28,12 @@
2828
import nl.altindag.log.util.Mappers;
2929

3030
import java.util.Collections;
31-
import java.util.HashMap;
3231
import java.util.List;
3332
import java.util.Map;
3433
import java.util.Optional;
3534
import java.util.Spliterator;
3635
import java.util.Spliterators;
36+
import java.util.concurrent.ConcurrentHashMap;
3737
import java.util.concurrent.CopyOnWriteArrayList;
3838
import java.util.function.Function;
3939
import java.util.function.Predicate;
@@ -47,7 +47,7 @@
4747
*/
4848
public final class LogCaptor implements AutoCloseable {
4949

50-
private static final Map<String, Level> logLevelContainer = new HashMap<>();
50+
private static final Map<String, Level> logLevelContainer = new ConcurrentHashMap<>();
5151

5252
private final Logger logger;
5353
private final InMemoryAppender<ILoggingEvent> inMemoryAppender;
@@ -257,15 +257,18 @@ public void reconfigure() {
257257
.forEach(logger::detachAppender);
258258

259259
logger.addAppender(inMemoryAppender);
260-
if (!ROOT_LOGGER_NAME.equals(logger.getName()) && AppenderUtils.getConsoleAppender(getRootLogger()).isPresent()) {
260+
261+
boolean isRootLogger = ROOT_LOGGER_NAME.equals(logger.getName());
262+
Optional<ConsoleAppender<ILoggingEvent>> rootConsoleAppender = AppenderUtils.getConsoleAppender(getRootLogger());
263+
if (!isRootLogger && rootConsoleAppender.isPresent()) {
261264
logger.setAdditive(true);
262265
}
263266

264-
if (!ROOT_LOGGER_NAME.equals(logger.getName()) && !AppenderUtils.getConsoleAppender(getRootLogger()).isPresent()) {
267+
if (!isRootLogger && !rootConsoleAppender.isPresent()) {
265268
logger.addAppender(consoleAppender);
266269
}
267270

268-
if (ROOT_LOGGER_NAME.equals(logger.getName())) {
271+
if (isRootLogger) {
269272
logger.addAppender(consoleAppender);
270273
}
271274

src/main/java/nl/altindag/log/mapper/LogEventMapper.java

Lines changed: 39 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -53,27 +53,10 @@ public LogEvent apply(ILoggingEvent iLoggingEvent) {
5353
String threadName = iLoggingEvent.getThreadName();
5454
ZonedDateTime timeStamp = ZonedDateTime.ofInstant(Instant.ofEpochMilli(iLoggingEvent.getTimeStamp()), ZoneOffset.UTC);
5555
Map<String, String> diagnosticContext = Collections.unmodifiableMap(iLoggingEvent.getMDCPropertyMap());
56-
List<Map.Entry<String, Object>> keyValuePairs = iLoggingEvent.getKeyValuePairs() == null ? Collections.emptyList() : iLoggingEvent.getKeyValuePairs().stream()
57-
.map(keyValuePair -> new SimpleImmutableEntry<>(keyValuePair.key, keyValuePair.value))
58-
.collect(Collectors.collectingAndThen(Collectors.toList(), Collections::unmodifiableList));
59-
60-
List<Object> arguments = Optional.ofNullable(iLoggingEvent.getArgumentArray())
61-
.map(Arrays::asList)
62-
.map(Collections::unmodifiableList)
63-
.orElseGet(Collections::emptyList);
64-
65-
Throwable throwable = Optional.ofNullable(iLoggingEvent.getThrowableProxy())
66-
.filter(ThrowableProxy.class::isInstance)
67-
.map(ThrowableProxy.class::cast)
68-
.map(ThrowableProxy::getThrowable)
69-
.orElse(null);
70-
71-
List<LogMarker> logMarkers = Collections.emptyList();
72-
if (iLoggingEvent.getMarkerList() != null) {
73-
logMarkers = iLoggingEvent.getMarkerList().stream()
74-
.map(MarkerMapper.getInstance())
75-
.collect(Collectors.collectingAndThen(Collectors.toList(), Collections::unmodifiableList));
76-
}
56+
List<Map.Entry<String, Object>> keyValuePairs = mapKeyValuePairs(iLoggingEvent);
57+
List<Object> arguments = mapArguments(iLoggingEvent);
58+
Throwable throwable = mapThrowable(iLoggingEvent);
59+
List<LogMarker> logMarkers = mapMarkers(iLoggingEvent);
7760

7861
return new LogEvent(
7962
message,
@@ -90,6 +73,41 @@ public LogEvent apply(ILoggingEvent iLoggingEvent) {
9073
);
9174
}
9275

76+
private static List<Map.Entry<String, Object>> mapKeyValuePairs(ILoggingEvent iLoggingEvent) {
77+
if (iLoggingEvent.getKeyValuePairs() == null) {
78+
return Collections.emptyList();
79+
}
80+
81+
return iLoggingEvent.getKeyValuePairs().stream()
82+
.map(keyValuePair -> new SimpleImmutableEntry<>(keyValuePair.key, keyValuePair.value))
83+
.collect(Collectors.collectingAndThen(Collectors.toList(), Collections::unmodifiableList));
84+
}
85+
86+
private static Throwable mapThrowable(ILoggingEvent iLoggingEvent) {
87+
return Optional.ofNullable(iLoggingEvent.getThrowableProxy())
88+
.filter(ThrowableProxy.class::isInstance)
89+
.map(ThrowableProxy.class::cast)
90+
.map(ThrowableProxy::getThrowable)
91+
.orElse(null);
92+
}
93+
94+
private static List<Object> mapArguments(ILoggingEvent iLoggingEvent) {
95+
return Optional.ofNullable(iLoggingEvent.getArgumentArray())
96+
.map(Arrays::asList)
97+
.map(Collections::unmodifiableList)
98+
.orElseGet(Collections::emptyList);
99+
}
100+
101+
private static List<LogMarker> mapMarkers(ILoggingEvent iLoggingEvent) {
102+
if (iLoggingEvent.getMarkerList() == null) {
103+
return Collections.emptyList();
104+
}
105+
106+
return iLoggingEvent.getMarkerList().stream()
107+
.map(MarkerMapper.getInstance())
108+
.collect(Collectors.collectingAndThen(Collectors.toList(), Collections::unmodifiableList));
109+
}
110+
93111
public static LogEventMapper getInstance() {
94112
return INSTANCE;
95113
}

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

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,11 @@
2323
import ch.qos.logback.core.encoder.Encoder;
2424
import nl.altindag.log.appender.InMemoryAppender;
2525

26-
import java.util.Arrays;
2726
import java.util.List;
28-
import java.util.Objects;
2927
import java.util.Optional;
28+
import java.util.Spliterator;
29+
import java.util.Spliterators;
30+
import java.util.stream.StreamSupport;
3031

3132
import static org.slf4j.Logger.ROOT_LOGGER_NAME;
3233

@@ -38,7 +39,6 @@ public final class AppenderUtils {
3839
public static final String CONSOLE_APPENDER_NAME = "console";
3940
public static final String IN_MEMORY_APPENDER_NAME = "logcaptor-in-memory-appender";
4041
private static final String DEFAULT_LOG_PATTERN = "%d{yyyy-MM-dd HH:mm:ss.SSSXXX} %-5level [%thread] %logger{36} - %msg%n";
41-
private static final List<String> CONSOLE_APPENDER_NAMES = Arrays.asList("console", "CONSOLE");
4242

4343
private AppenderUtils() {}
4444

@@ -62,10 +62,8 @@ public static Encoder<ILoggingEvent> createEncoder(LoggerContext loggerContext)
6262
}
6363

6464
public static Optional<ConsoleAppender<ILoggingEvent>> getConsoleAppender(Logger logger) {
65-
return CONSOLE_APPENDER_NAMES.stream()
66-
.map(logger::getAppender)
67-
.filter(Objects::nonNull)
68-
.filter(ConsoleAppender.class::isInstance)
65+
return StreamSupport.stream(Spliterators.spliteratorUnknownSize(logger.iteratorForAppenders(), Spliterator.ORDERED), false)
66+
.filter(appender -> appender instanceof ConsoleAppender)
6967
.map(consoleAppender -> (ConsoleAppender<ILoggingEvent>) consoleAppender)
7068
.findFirst();
7169
}

0 commit comments

Comments
 (0)