📍 애플리케이션 로깅(Logging)
- 로깅 : 애플리케이션 실행 정보를 제공하는 일련의 기록인 로그(log)를 생성시키는 것
사용 목적
- 애플리케이션 실행 중 문제가 발생했을 때, 문제의 원인을 파악하기 위한 정보를 제공한다.
사용 이점
- 로그는 애플리케이션 실행과 관련된 유용한 정보를 제공할 수 있다.
- 실행날짜와 시간, 로그레벨, 스레드명, 패키지 및 클래스명, 메서드명, 행번호, 로그메시지 등
- 출력형식을 쉽게 변경할 수 있다.
- 로그 출력레벨에 따라서 로그 출력을 조절할 수 있다.
- 다양한 방식으로 로그를 출력할 수 있다.
📌 로그 출력 레벨
- TRACE : 자세한 정보
- DEBUG : 디버깅 정보
- INFO : 정보
- WARN : 경고
- ERROR : 오류
- FATAL : 심각한 오류
- 로그출력레벨을 TRACE로 지정 시
- log.trace(메시지), log.debug(메시지), log.info(메시지), ..., log.fatal(메시지)로 출력하는 모든 로고 출력
- 로그출력레벨을 ERROR로 지정 시
- log.error(메시지), log.fatal(메시지)로 출력하는 모든 로그 출력
- 개발 단계 : 로그레벨을 TRACE나 DEBUG로 설정해서 자세한 로그를 출력시키고, 디버깅에 활용한다.
- 운영 단계 : 레벨을 ERROR로 설정해서 불필요한 로그를 출력시키지 않고, 에러 발생 시에만 출력되도록 한다.
- 레벨별 로그 내용
- log.debug(메시지)
- 프로그램 실행과 관련된 상세한 정보를 출력시킨다.
- log.info(메시지)
- 애플리케이션 정상 실행 여부를 확인할 수 있는 중요한 정보를 출력시킨다.
- log.error(메시지)
public void registerUser(String user) {
log.debug("회원가입 기능 시작");
log.info("신규 회원정보: " + user);
User savedUser = userMapper.getUserById(user.getId);
log.debug("조회된 회원정보: " + savedUser);
if (savedUser != null) {
log.debug("[" + user.getId() + "] 사용자가 이미 존재한다.")
throws new RuntimeException("사용자정보가 존재한다.");
}
log.debug("회원가입 기능 종료");
}
💡 Tip. 코딩 시 아래 5가지 금지
- System.out.println()
- 선언 후 사용하지 않은 변수
- for (int x=0; x < list.size(); x++)
- 위처럼 사용하지 말고, 아래처럼 사용
int len = list.size();
for (int x=0; x < len; x++)
* 첫번째의 경우 콜렉션의 개수를 계속 사용하기 때문에 성능 저하
- "no".equals()를 반대로 사용한 경우
- 올바른 예 : "N".equals(payment.getPayCompleted())
잘못된 예 : payment.getPayCompleted().equals(”N”)
* 문자열이 equals 앞에 위치
- import 후 사용 안한 경우