728x90
반응형
SMALL
안녕하세요!
프뚜입니다.
LogbackFilter를 통해 log를 컨트롤하려고 합니다.
[개발 환경]
- OS: Windows 10 64bit
- JAVA: 1.8
# logback.xml 설정하기
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<!-- 2022.12.30[프뚜]: LogbackFilter 설정 -->
<filter class="tistory.petoo.config.filter.LogbackFilter"/>
<layout class="ch.qos.logback.classic.PatternLayout">
<pattern>[%F]%M\(%L\) : %m%n</pattern>
</layout>
</appender>
<root level="INFO">
<appender-ref ref="console"/>
</root>
</configuration>
./resources/logback.xml을 생성 후 filter연결을 합니다.
# LogbackFilter Class 생성하기
public class LogbackFilter extends Filter<ILoggingEvent> {
// 2022.12.30[프뚜]: 정규식을 사용하여 해당 Class Path 를 제외
private String[] excludeClassPathPattern = {
"tistory.petoo.controller.([^/]+)",
};
@Override
public FilterReply decide(ILoggingEvent event) {
for (String pattern : excludeClassPathPattern) {
if (Pattern.matches(pattern, event.getLoggerName())) {
return FilterReply.DENY;
}
}
return FilterReply.ACCEPT;
}
}
tistory.petoo.controller.* Class Path는 제외했습니다.
# TestController Class 생성하기
@Slf4j
@RequiredArgsConstructor
@RestController
public class TestController {
@GetMapping("/")
public ResponseEntity<?> main() throws Exception {
log.info("[LOG] Method: main()");
return ResponseEntity.ok().body("main");
}
@PostMapping("/test")
public ResponseEntity<?> test(@RequestBody Map param) throws Exception {
log.info("[LOG] Method: test()");
return ResponseEntity.ok().body(param);
}
@PostMapping("/exclude1/test")
public ResponseEntity<?> exclude1(@RequestBody Map param) throws Exception {
log.info("[LOG] Method: exclude1()");
return ResponseEntity.ok().body(param);
}
@PostMapping("/exclude2/t/e/s/t/double/test")
public ResponseEntity<?> exclude2(@RequestBody Map param) throws Exception {
log.info("[LOG] Method: exclude2()");
return ResponseEntity.ok().body(param);
}
}
/, /test, /exclude1/test, /exclude2/t/e/s/t/double/test URI가 있습니다.
# Postman 테스트하기
/ URI에 request를 실행시켰으나, LogbackFilter에 제외됐기 때문에 log가 실행되지 않았습니다.
@GetMapping("/")
public ResponseEntity<?> main() throws Exception {
log.info("[LOG] Method: main()");
return ResponseEntity.ok().body("main");
}
[LOG] Method: main() Log가 있으나 실행되지 않습니다.
자세한 내용은 소스코드를 통해 확인해보실 수 있습니다. (제목과 Git Comment는 같습니다.)
728x90
반응형
LIST
'프로그램 > JAVA' 카테고리의 다른 글
[Filter] Spring Filter XSS 공격 방어하기 (ResponseFilter) (1) | 2023.01.06 |
---|---|
[Regex] JAVA replace 정규 문자 변경하기 (2) | 2023.01.05 |
[Regex] JAVA 정규식표현 사용하기 (0) | 2023.01.04 |
[AOP] SpringBoot AOP 사용하기 (2) | 2022.12.30 |
[JWT] Spring Interceptor 세팅 및 사용하기 (2) | 2022.12.28 |