로깅

업무 프로그램에서 어떤 컨텐츠를 로그에 기록하는 방법을 설명한다.

로그 레벨과 로깅 내용

로그 레벨과 로깅 내용
로그 레벨 로깅 내용 개발 테스트 운영

DEBUG

개발 환경에서 디버긴 목적으로 출력한다.

무의미한 문장열 등은 개발이 완료되면 삭제한다.

O

X

X

INFO

테스트, 검증 목적의 메시지만 출력한다.

O

O

X

WARN

운영 환경에서 운영자에 의해 확인이 필요한 내용을 출력한다.

장애 원인을 추적할 목적으로 출력한다.

O

O

O

ERROR

오류(장애, 이상)가 발생한 경우 그 내용을 출력한다.

Exception 발생 로그도 ERROR 레벨을 사용한다.

O

O

O

  • DEBUG > INFO > WARN > ERROR 순으로 로그 레벨이 낮아지면 출력 내용이 적어진다.

  • 낮은 레벨로 남긴 로그는 높은 레벨에서도 출력된다. (서버 설정이 DEBUG일 때 INFO로 코딩된 로그도 출력된다.)

  • 업무 개발시 warn 또는 error 레벨의 로깅은 최소화한다. 거래가 빈번한 운영 환경에서 예기치 않은 성능 손실과 로그 과다 현상을 초래할 수 있기 때문이다. 그리고 필요한 경우라면 특정 거래의 로그 레벨을 거래 파라미터 관리에서 변경할 수 있다.

로깅 방법

org.slf4j.Logger를 사용하며, 아래와 같이 logger 객체를 멤버 변수로 선언한다.

            private final Logger logger = LoggerFactory.getLogger(this.getClass());

debug, info, warn, error 메소드

            // 고정 문자열 로깅
            logger.debug("로깅 내용");

            // IO, VO 객체 로깅
            logger.debug("로깅 내용 : {}", input);

            // 개별 필드 로깅
            logger.debug("로깅 내용 : {}", input.getBizCd());

            // N개의 항목 로깅
            logger.debug("로깅 내용1 : {}, 내용2 : {}, 내용3 : {}", input.getEmpNo(), input.getEmpNm(), input.getHireDt());

Exception 객체 로깅

            logger.error("접수 처리중 에러", e);

주의 사항

로그 출력 시 연산과 업무 로직 호출을 수행하지 않는다.

올바르지 않은 케이스

        // String 연산
        logger.debug("입력 내용 : {}", input.getNodeNm() + "-" + input.getInstanceNm());

        // toString()은 String 연산을 발생시킨다.
        logger.debug("입력 내용 : {}", input.toString());

        // 업루 로직을 로그 안에서 직접 호출하는 경우
        logger.debug("계산 결과 값 : {}", calculateAmt(input));

올바르지 않은 패턴의 로깅이나 많은 내용의 로깅이 반드시 필요하다면 조건문을 추가한다.

        if (logger.isDebugEnabled()) {

            /* 로그 출력 */

        }

로그 레벨 변경

개발 환경의 디폴트 로그 레벨은 DEBUG이다.

로그 레벨은 BXCM Web Admin에 접속하여 [온라인 관리 - 거래 파라미터 관리] 메뉴에서 변경할 수 있다.

chapter3/log001
Figure 1. 거래 파라미터 수정 팝업
SWLab Bankware Global
  • 전체
  • BXM
  • BXCM
  • BXCP
  • BXI
제품 선택 시 더 정확한 매뉴얼 가이드를 제공해드립니다.

Copyright© Bankwareglobal All Rights Reserved.