Skip to content

Commit b9d26c3

Browse files
朱晔朱晔
authored andcommitted
更新MultipleLevelsFilter的例子
1 parent f91ce20 commit b9d26c3

File tree

3 files changed

+79
-1
lines changed

3 files changed

+79
-1
lines changed

src/main/java/org/geekbang/time/commonmistakes/logging/duplicate/CommonMistakesApplication.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
public class CommonMistakesApplication {
88

99
public static void main(String[] args) {
10-
System.setProperty("logging.config", "classpath:org/geekbang/time/commonmistakes/logging/duplicate/filterright.xml");
10+
System.setProperty("logging.config", "classpath:org/geekbang/time/commonmistakes/logging/duplicate/multiplelevelsfilter.xml");
1111
SpringApplication.run(CommonMistakesApplication.class, args);
1212
}
1313
}
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
package org.geekbang.time.commonmistakes.logging.duplicate;
2+
3+
import ch.qos.logback.classic.Level;
4+
import ch.qos.logback.classic.spi.ILoggingEvent;
5+
import ch.qos.logback.core.filter.Filter;
6+
import ch.qos.logback.core.spi.FilterReply;
7+
import lombok.Getter;
8+
import lombok.Setter;
9+
import org.springframework.util.StringUtils;
10+
11+
import java.util.Arrays;
12+
import java.util.List;
13+
import java.util.stream.Collectors;
14+
15+
public class MultipleLevelsFilter extends Filter<ILoggingEvent> {
16+
17+
@Getter
18+
@Setter
19+
private String levels;
20+
private List<Integer> levelList;
21+
22+
@Override
23+
public FilterReply decide(ILoggingEvent event) {
24+
25+
if (levelList == null && !StringUtils.isEmpty(levels)) {
26+
levelList = Arrays.asList(levels.split("\\|")).stream()
27+
.map(item -> Level.valueOf(item))
28+
.map(level -> level.toInt())
29+
.collect(Collectors.toList());
30+
}
31+
32+
if (levelList.contains(event.getLevel().toInt()))
33+
return FilterReply.ACCEPT;
34+
else
35+
return FilterReply.DENY;
36+
}
37+
38+
}
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
<?xml version="1.0" encoding="UTF-8" ?>
2+
<configuration>
3+
<property name="logDir" value="./logs"/>
4+
<property name="app.name" value="common-mistakes"/>
5+
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
6+
<layout class="ch.qos.logback.classic.PatternLayout">
7+
<pattern>[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%thread] [%-5level] [%logger{40}:%line] - %msg%n</pattern>
8+
</layout>
9+
</appender>
10+
11+
<appender name="INFO_FILE" class="ch.qos.logback.core.FileAppender">
12+
<File>${logDir}/${app.name}_info.log</File>
13+
<filter class="org.geekbang.time.commonmistakes.logging.duplicate.MultipleLevelsFilter">
14+
<levels>INFO|WARN</levels>
15+
</filter>
16+
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
17+
<pattern>[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%thread] [%-5level] [%logger{40}:%line] - %msg%n</pattern>
18+
<charset>UTF-8</charset>
19+
</encoder>
20+
</appender>
21+
<appender name="ERROR_FILE" class="ch.qos.logback.core.FileAppender">
22+
<File>${logDir}/${app.name}_error.log</File>
23+
<filter class="ch.qos.logback.classic.filter.LevelFilter">
24+
<level>ERROR</level>
25+
<onMatch>ACCEPT</onMatch>
26+
<onMismatch>DENY</onMismatch>
27+
</filter>
28+
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
29+
<pattern>[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%thread] [%-5level] [%logger{40}:%line] - %msg%n</pattern>
30+
<charset>UTF-8</charset>
31+
</encoder>
32+
</appender>
33+
34+
<root level="INFO">
35+
<appender-ref ref="CONSOLE"/>
36+
<appender-ref ref="INFO_FILE"/>
37+
<appender-ref ref="ERROR_FILE"/>
38+
</root>
39+
40+
</configuration>

0 commit comments

Comments
 (0)