1+ package fi .hsl .common .logging ;
2+
3+ import ch .qos .logback .classic .Logger ;
4+ import ch .qos .logback .classic .spi .ILoggingEvent ;
5+ import ch .qos .logback .core .AppenderBase ;
6+ import org .junit .Before ;
7+ import org .junit .Test ;
8+ import org .slf4j .LoggerFactory ;
9+
10+ import java .util .ArrayList ;
11+ import java .util .List ;
12+
13+ import static org .junit .Assert .assertEquals ;
14+
15+ public class DuplicateLogFilterTest {
16+
17+ private TestAppender testAppender ;
18+ private Logger logger ;
19+
20+ @ Before
21+ public void setUp () {
22+ // Set up the logger and attach the test appender
23+ logger = (Logger ) LoggerFactory .getLogger ("testLogger" );
24+ logger .setAdditive (false );
25+
26+ testAppender = new TestAppender ();
27+ DuplicateLogFilter filter = new DuplicateLogFilter ();
28+ filter .setSuppressIntervalMillis (1000 );
29+ testAppender .addFilter (filter ); // Add the filter here
30+ testAppender .start ();
31+ logger .addAppender (testAppender );
32+ }
33+
34+ @ Test
35+ public void testDuplicateLogFilter () {
36+ // Log messages
37+ logger .info ("Test message" );
38+ logger .info ("Test message" ); // Duplicate
39+ logger .info ("Another message" );
40+
41+ // Verify captured logs
42+ List <String > loggedMessages = testAppender .getLoggedMessages ();
43+ assertEquals (2 , loggedMessages .size ());
44+ assertEquals ("Test message" , loggedMessages .get (0 ));
45+ assertEquals ("Another message" , loggedMessages .get (1 ));
46+ }
47+
48+ // Custom appender to capture log events
49+ private static class TestAppender extends AppenderBase <ILoggingEvent > {
50+ private final List <String > loggedMessages = new ArrayList <>();
51+
52+ @ Override
53+ protected void append (ILoggingEvent eventObject ) {
54+ loggedMessages .add (eventObject .getFormattedMessage ());
55+ }
56+
57+ public List <String > getLoggedMessages () {
58+ return loggedMessages ;
59+ }
60+ }
61+ }
0 commit comments