Skip to content

Commit 5c0c70d

Browse files
authored
Merge branch 'develop' into healthcheck-many-threads
2 parents 3329ec6 + 852b618 commit 5c0c70d

File tree

2 files changed

+64
-1
lines changed

2 files changed

+64
-1
lines changed

src/main/java/fi/hsl/common/logging/DuplicateLogFilter.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,11 +25,13 @@ public FilterReply decide(ILoggingEvent event) {
2525
String message = event.getFormattedMessage();
2626
long currentTimeMillis = System.currentTimeMillis();
2727

28-
Long lastTimestamp = messageTimestamps.put(message, currentTimeMillis);
28+
Long lastTimestamp = messageTimestamps.get(message);
2929
if (lastTimestamp != null && (currentTimeMillis - lastTimestamp) < suppressIntervalMillis) {
3030
return FilterReply.DENY;
3131
}
3232

33+
messageTimestamps.put(message, currentTimeMillis);
34+
3335
// Evict old entries (example: entries older than 1 hour)
3436
cleanMapByLogAge(currentTimeMillis);
3537

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
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

Comments
 (0)