forked from quarkusio/quarkus
-
Notifications
You must be signed in to change notification settings - Fork 1
/
LogCleanupFilter.java
45 lines (37 loc) · 1.58 KB
/
LogCleanupFilter.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
package io.quarkus.runtime.logging;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.logging.Filter;
import java.util.logging.Level;
import java.util.logging.LogRecord;
import org.jboss.logging.Logger;
public class LogCleanupFilter implements Filter {
final Map<String, LogCleanupFilterElement> filterElements = new HashMap<>();
public LogCleanupFilter(Collection<LogCleanupFilterElement> filterElements) {
for (LogCleanupFilterElement element : filterElements) {
this.filterElements.put(element.getLoggerName(), element);
}
}
@Override
public boolean isLoggable(LogRecord record) {
// Only allow filtering messages of warning level and lower
if (record.getLevel().intValue() > Level.WARNING.intValue()) {
return true;
}
LogCleanupFilterElement filterElement = filterElements.get(record.getLoggerName());
if (filterElement != null) {
for (String messageStart : filterElement.getMessageStarts()) {
if (record.getMessage().startsWith(messageStart)) {
record.setLevel(filterElement.getTargetLevel());
if (filterElement.getTargetLevel().intValue() <= org.jboss.logmanager.Level.TRACE.intValue()) {
return Logger.getLogger(record.getLoggerName()).isTraceEnabled();
} else {
return Logger.getLogger(record.getLoggerName()).isDebugEnabled();
}
}
}
}
return true;
}
}