ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • ToStringBuilder 에서 null 값 제외하기
    JAVA 2018. 12. 7. 09:10
    반응형
    지금 담당하는 프로젝트에서 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);
            }
        }
    }

    반응형
Designed by Tistory.