Skip to content

Commit

Permalink
Added support for capturing static inner classes, fixed javadoc warnings
Browse files Browse the repository at this point in the history
  • Loading branch information
小芯斜芯谢械胁 袙邪褋懈谢懈泄 committed Jul 3, 2021
1 parent 932a754 commit 3af26e5
Show file tree
Hide file tree
Showing 2 changed files with 34 additions and 2 deletions.
16 changes: 14 additions & 2 deletions src/main/java/nl/altindag/log/LogCaptor.java
Original file line number Diff line number Diff line change
Expand Up @@ -70,20 +70,32 @@ private LogCaptor(String loggerName) {

/**
* Captures all log messages
*
* @return LogCaptor instance for the root logger
*/
public static LogCaptor forRoot() {
return new LogCaptor(ROOT_LOGGER_NAME);
}

/**
* Captures log messages for the provided class
*
* @param clazz Class for capturing
* @return LogCaptor instance for the provided class
*/
public static <T> LogCaptor forClass(Class<T> clazz) {
return new LogCaptor(clazz.getName());
public static LogCaptor forClass(Class<?> clazz) {
String className = Optional
.ofNullable(clazz.getCanonicalName())
.orElse(clazz.getName());

return new LogCaptor(className);
}

/**
* Captures log messages for the provided logger name
*
* @param name Logger name for capturing
* @return LogCaptor instance for the provided logger name
*/
public static LogCaptor forName(String name) {
return new LogCaptor(name);
Expand Down
20 changes: 20 additions & 0 deletions src/test/java/nl/altindag/log/LogCaptorShould.java
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
import ch.qos.logback.core.Appender;
import ch.qos.logback.core.read.ListAppender;
import ch.qos.logback.core.spi.FilterReply;
import lombok.extern.log4j.Log4j2;
import nl.altindag.log.model.LogEvent;
import nl.altindag.log.service.LogMessage;
import nl.altindag.log.service.Service;
Expand Down Expand Up @@ -413,6 +414,25 @@ void detachAppenderWithAutoClosable() {
assertThat(fetchAppenders(logger)).isEmpty();
}

@Test
void captureLogEventsFromStaticInnerClasses() {
try (LogCaptor logCaptor = LogCaptor.forClass(StaticInnerTestClass.class)) {
StaticInnerTestClass.call();

assertThat(logCaptor.getInfoLogs())
.hasSize(1)
.first()
.isEqualTo("Test message");
}
}

@Log4j2
private static class StaticInnerTestClass {
static void call() {
log.info("Test message");
}
}

private static void assertListAppender(Logger logger) {
assertThat(fetchAppenders(logger))
.hasSize(1)
Expand Down

0 comments on commit 3af26e5

Please sign in to comment.