feat: logging masking 적용

dev
gitea-관리자 1 year ago
parent e0a6341756
commit b7df5aa9f5

@ -8,10 +8,17 @@ import java.util.UUID;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.Future;
import javax.servlet.http.HttpServletRequest;
import kr.xit.core.biz.model.LoggingDTO;
import kr.xit.core.biz.service.ILoggingService;
import kr.xit.core.exception.BizRuntimeException;
import kr.xit.core.model.ApiResponseDTO;
import kr.xit.core.spring.util.error.ErrorParse;
import kr.xit.core.support.slack.SlackWebhookPush;
import kr.xit.core.support.utils.Checks;
import kr.xit.core.support.utils.JsonUtils;
import kr.xit.core.support.utils.LogUtils;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.ProceedingJoinPoint;
@ -30,16 +37,6 @@ import org.springframework.stereotype.Component;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import kr.xit.core.exception.BizRuntimeException;
import kr.xit.core.model.ApiResponseDTO;
import kr.xit.core.biz.model.LoggingDTO;
import kr.xit.core.biz.service.ILoggingService;
import kr.xit.core.spring.util.error.ErrorParse;
import kr.xit.core.support.slack.SlackWebhookPush;
import kr.xit.core.support.utils.Checks;
import kr.xit.core.support.utils.JsonUtils;
import lombok.extern.slf4j.Slf4j;
/**
* <pre>
* description : logging trace aspect
@ -126,7 +123,7 @@ public class TraceLoggerAspect {
ServletRequestAttributes attributes = (ServletRequestAttributes)RequestContextHolder.getRequestAttributes();
HttpServletRequest request = attributes != null? attributes.getRequest(): null;
traceLogging(JsonUtils.toJson(pjp.getArgs()), request);
traceLogging(JsonUtils.toObjByObj(pjp.getArgs()[0], JSONObject.class), request);
Object result = pjp.proceed();
if(result instanceof CompletableFuture){
@ -163,7 +160,7 @@ public class TraceLoggerAspect {
* @param params
* @param request
*/
protected void traceLogging(final String params, final HttpServletRequest request) {
protected void traceLogging(final JSONObject json, final HttpServletRequest request) {
if(request != null) {
String uri = request.getRequestURI();
if(Arrays.stream(excludes).anyMatch(uri::matches)) return;
@ -182,6 +179,7 @@ public class TraceLoggerAspect {
}
//TODO::systemId, reqSystemId 설정 필요
log.info("@@@@@@@@@@@@@@@@@로깅 start : [\n{}\n]",MDC.getCopyOfContextMap());
String params = resetJsonMasking(json);
MDC.put("systemId", "ENS");
MDC.put("reqSystemId", "KAKAO");
MDC.put("param", params);
@ -338,6 +336,7 @@ log.info("@@@@@@@@@@@@@@@@@로깅 start : [\n{}\n]",MDC.getCopyOfContextMap());
}
private String maskingParam(final String key, final String value){
if(Checks.isEmpty(value)) return value;
if("juminId".equals(key)) {
if(value.length() == 14) {
return value.replaceAll("([0-9]{6})-([1-4]{1})([0-9]{6})", "$1-$2******");
@ -358,4 +357,16 @@ log.info("@@@@@@@@@@@@@@@@@로깅 start : [\n{}\n]",MDC.getCopyOfContextMap());
}
return value;
}
@SuppressWarnings("unchecked")
private String resetJsonMasking(final JSONObject json){
for (Object key : json.keySet()) {
if(Checks.isEmpty(json.get(key))) {
json.put(key, json.get(key));
}else {
json.put(key, maskingParam((String) key, String.valueOf(json.get(key))));
}
}
return json.toJSONString();
}
}

Loading…
Cancel
Save