Skip to content

Commit aa263bb

Browse files
committed
HV-1591 Add extra methods to ListAppender
Make it easier to get and filter the logged messages for testing
1 parent 73ae8ee commit aa263bb

File tree

1 file changed

+25
-1
lines changed

1 file changed

+25
-1
lines changed

engine/src/test/java/org/hibernate/validator/testutils/ListAppender.java

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,19 @@
44
*/
55
package org.hibernate.validator.testutils;
66

7+
import static java.util.Collections.unmodifiableList;
8+
79
import java.util.ArrayList;
810
import java.util.Collections;
911
import java.util.List;
12+
import java.util.function.Predicate;
1013

14+
import org.apache.logging.log4j.Level;
1115
import org.apache.logging.log4j.core.LogEvent;
1216
import org.apache.logging.log4j.core.appender.AbstractAppender;
1317
import org.apache.logging.log4j.core.config.Property;
1418
import org.apache.logging.log4j.core.impl.MutableLogEvent;
19+
import org.apache.logging.log4j.message.Message;
1520

1621
/**
1722
* A simple log appender for tests.
@@ -39,6 +44,25 @@ public void clear() {
3944
}
4045

4146
public List<LogEvent> getEvents() {
42-
return Collections.unmodifiableList( this.events );
47+
return unmodifiableList( this.events );
48+
}
49+
50+
/**
51+
* Returns all logged messages
52+
*/
53+
public List<String> getMessages() {
54+
return getMessages(logEvent -> true);
55+
}
56+
57+
/**
58+
* Returns logged messages matching the specified {@link Level}
59+
*/
60+
public List<String> getMessages(Level level) {
61+
return getMessages(logEvent -> logEvent.getLevel().equals(level));
62+
}
63+
64+
private List<String> getMessages(Predicate<LogEvent> filter) {
65+
return events.stream().filter(filter).map(LogEvent::getMessage)
66+
.map(Message::getFormattedMessage).toList();
4367
}
4468
}

0 commit comments

Comments
 (0)