build: 설정 정리
parent
5e8e150066
commit
461dfd43f1
@ -1,111 +0,0 @@
|
|||||||
package com.xit.core.config.filter.log;
|
|
||||||
|
|
||||||
import com.xit.core.constant.XitConstants;
|
|
||||||
import org.springframework.core.Ordered;
|
|
||||||
import org.springframework.core.annotation.Order;
|
|
||||||
import org.springframework.web.filter.CommonsRequestLoggingFilter;
|
|
||||||
import org.springframework.web.util.ContentCachingRequestWrapper;
|
|
||||||
|
|
||||||
import javax.servlet.ServletInputStream;
|
|
||||||
import javax.servlet.annotation.WebFilter;
|
|
||||||
import javax.servlet.http.HttpServletRequest;
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.util.regex.Pattern;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* <pre>
|
|
||||||
* WebFilter로 등록
|
|
||||||
* Application main에 @ServletComponentScan annotation 필요
|
|
||||||
* logging.level.org.springframework.web.filter=debug 로 설정(로그 출력)
|
|
||||||
* --> 설정 불필요 :: 적용이 안돼고 있음
|
|
||||||
* logback에 CustomCommonsRequestLoggingFilter 에 대한 logger level=debug or info로 설정 해야만 로그 출력
|
|
||||||
* CommonsRequestLoggingFilter 확장
|
|
||||||
* logging에서 제외할 url 패턴 지정
|
|
||||||
*
|
|
||||||
* LoggerAspect 에서 로그 출력 하여 미사용
|
|
||||||
* </pre>
|
|
||||||
*/
|
|
||||||
//@WebFilter(urlPatterns = "/api/*")
|
|
||||||
//@Order(Ordered.HIGHEST_PRECEDENCE)
|
|
||||||
public class CustomCommonsRequestLoggingFilter extends CommonsRequestLoggingFilter {
|
|
||||||
private static final Pattern ONLY_LOGGING_PATTERN = Pattern.compile(XitConstants.EXCLUDE_LOGGING_URL_PATTERN);
|
|
||||||
CatchLocation catchLocation = CatchLocation.AFTER;
|
|
||||||
|
|
||||||
MessageMaker messageMaker;
|
|
||||||
|
|
||||||
enum CatchLocation {
|
|
||||||
ALL, BEFORE, AFTER
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected boolean shouldNotFilter(HttpServletRequest request) {
|
|
||||||
//It can be either RequestURI(includes context path)
|
|
||||||
String loggingPattern = request.getRequestURI();
|
|
||||||
//or ServletPath based on your requirement
|
|
||||||
//loggingPattern = request.getServletPath();
|
|
||||||
|
|
||||||
// If you want to log a particular endpoint then return true
|
|
||||||
// or if you don't want to log the endpoint then return false
|
|
||||||
return ONLY_LOGGING_PATTERN.matcher(loggingPattern).find();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected boolean shouldLog(HttpServletRequest request) {
|
|
||||||
return logger.isInfoEnabled();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected void beforeRequest(HttpServletRequest request, String message) {
|
|
||||||
if(catchLocation == CatchLocation.BEFORE || catchLocation == CatchLocation.ALL) {
|
|
||||||
logger.info(message);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected void afterRequest(HttpServletRequest request, String message) {
|
|
||||||
if(request instanceof ContentCachingRequestWrapper) {
|
|
||||||
try (ServletInputStream is = request.getInputStream()) {
|
|
||||||
if(is.available() >= 0) {
|
|
||||||
while(true) {
|
|
||||||
int read = is.read(new byte[8096]);
|
|
||||||
if (read < 8096) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} catch (IOException e) {
|
|
||||||
throw new RuntimeException(e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if(catchLocation == CatchLocation.AFTER || catchLocation == CatchLocation.ALL) {
|
|
||||||
logger.info(message);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected String createMessage(HttpServletRequest request, String prefix, String suffix) {
|
|
||||||
// if(!logger.isWarnEnabled()) return null;
|
|
||||||
if(this.messageMaker != null) {
|
|
||||||
return this.messageMaker.make(request, prefix, suffix);
|
|
||||||
} else {
|
|
||||||
return super.createMessage(request, prefix, suffix);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public interface MessageMaker {
|
|
||||||
String make(HttpServletRequest request, String prefix, String suffix);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// public CatchLocation getCatchLocation() {
|
|
||||||
// return catchLocation;
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// public void setCatchLocation(CatchLocation catchLocation) {
|
|
||||||
// this.catchLocation = catchLocation;
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// public void setMessageMaker(MessageMaker messageMaker) {
|
|
||||||
// this.messageMaker = messageMaker;
|
|
||||||
// }
|
|
||||||
}
|
|
Loading…
Reference in New Issue