2 Commits

Author SHA1 Message Date
curry772 495241c5d0 org.apache.hc.client5.http logger 중복 출력 문제 처리
- additive : false
- add console appender
2026-07-29 15:38:08 +09:00
curry772 f5a653ca6a 마스킹 : 코드 상수 추가 및 mask 메소드 추가 2026-07-20 16:25:43 +09:00
2 changed files with 105 additions and 1 deletions
@@ -898,7 +898,7 @@ public class Logger implements LogKeys {
String adapterLogLevel = pmanager.getProperty(LOGGER_ADAPTER_PREFIX, LOG_LEVEL);
hc5Logger.setLevel(Level.toLevel(adapterLogLevel));
hc5Logger.setAdditive(true);
hc5Logger.setAdditive(false);
String appenderNames = pmanager.getProperty(LOGGER_ADAPTER_PREFIX, APPENDER);
if(appenderNames!=null) {
@@ -914,6 +914,12 @@ public class Logger implements LogKeys {
}
}
String console = loggerInfo.getProperty(CONSOLE);
if((console!=null) && console.equals("on")) {
hc5Logger.addAppender(consoleAppender);
System.out.println("@ add ConsoleAppender to " + logger.getName());
}
// * 거래 파일 로그 추가 코드
// MDC txId가 있을 때만 SiftingAppender로 기록하는 필터
// (txId 없는 일반 로그가 default.log로 쌓이는 것 방지)
@@ -437,4 +437,102 @@ public final class MaskingUtils {
}
return sb.toString();
}
public static final int ResidentNumber = 11;
public static final int DriverLicense = 12;
public static final int Passport = 13;
public static final int ForeignerNumber = 14;
public static final int AccountNumber = 21;
public static final int CardNumber = 22;
public static final int CardExpiry = 23;
public static final int Cvv = 24;
public static final int Password = 31;
public static final int PhoneNumber = 41;
public static final int MobileNumber = 41;
public static final int FaxNumber = 41;
public static final int Email = 42;
public static final int KoreanName = 43;
public static final int EnglishName = 44;
public static final int JibunAddress = 45;
public static final int RoadAddress = 46;
public static final int Ip = 51;
public static final int All = 99;
/**
* 마스킹 타입코드에 맞추어 마스킹 처리
*
* @param str
* @param maskOffset
* @return
*/
public static String mask(String str, int maskOffset) {
switch (maskOffset) {
case ResidentNumber:
return maskResidentNumber(str);
case DriverLicense:
return maskDriverLicense(str);
case Passport:
return maskPassport(str);
case ForeignerNumber:
return maskForeignerNumber(str);
case AccountNumber:
return maskAccountNumber(str);
case CardNumber:
return maskCardNumber(str);
case CardExpiry:
return maskCardExpiry(str);
case Cvv:
return maskCvv(str);
case Password:
return maskPassword(str);
// PhoneNumber(41) = MobileNumber(41) = FaxNumber(41): 값이 같아
// case 레이블을 각각 선언하면 컴파일 에러(중복 case)이므로 하나로 통합.
// maskPhoneNumber가 전화/휴대폰/팩스 형식을 모두 처리함.
case PhoneNumber:
return maskPhoneNumber(str);
case Email:
return maskEmail(str);
case KoreanName:
return maskKoreanName(str);
case EnglishName:
return maskEnglishName(str);
case JibunAddress:
return maskJibunAddress(str);
case RoadAddress:
return maskRoadAddress(str);
case Ip:
return maskIpAddress(str);
case All:
return stars(str.length());
default:
return str;
}
}
}