지금 담당하는 프로젝트에서 AOP 로 각 메소드의 인/아웃 정보를 출력하는 코드가 있다.
public 으로 된 모든 메소드에 대해 인/아웃 정보를 출력하기 때문에,
서비스의 호출이 많아 질수록 로그도 급격히 늘어 나는 구조다.
여러 이유로 인/아웃 정보를 포기 할 수 없는 상황에서 null 인 값은 찍지 않아도 된다는 확답을 받아,
아래의 코드를 사용하여 null 인 데이터는 제외하도록 처리 했다.
log.info("[ARGS] {} ", ToStringBuilder.reflectionToString(args, NotNullToStringStyle.NOT_NULL_STYLE));
class NotNullToStringStyle extends ToStringStyle {
public static final ToStringStyle NOT_NULL_STYLE = new NotNullToStringStyle();
NotNullToStringStyle() {
super();
this.setContentStart("[");
this.setFieldSeparator(", ");
this.setContentEnd("]");
}
private Object readResolve() {
return NOT_NULL_STYLE;
}
@Override
public void append(StringBuffer buffer, String fieldName, Object value, Boolean fullDetail) {
if (value != null) {
appendFieldStart(buffer, fieldName);
appendInternal(buffer, fieldName, value, isFullDetail(fullDetail));
appendFieldEnd(buffer, fieldName);
}
}
}
'JAVA' 카테고리의 다른 글
유연한 솔루션보다 단순한 솔루션을 선택하자 (0) | 2019.04.01 |
---|---|
JAVA 8 핵심만 정리했다 (0) | 2019.02.22 |
ToStringBuilder 에서 null 값 제외하기 (0) | 2018.12.07 |
Migrate to Java9 (0) | 2018.05.05 |
오라클 : Java SE 8 비즈니스 사용자는 내년 1 월부터 라이센스를 구입해야합니다. (0) | 2018.04.26 |
모든 레벨의 프로그래머를 위한 10가지 Java 블로그 (0) | 2018.04.20 |