Step by Step

Log의 종류 & 리팩토링(?) 본문

Spring

Log의 종류 & 리팩토링(?)

짤진이 2024. 5. 9. 14:25
반응형
log.trace("trace log = {}", name);
log.debug("debug log = {}", name);
log.info("info log = {}", name);
log.warn("warn log = {}", name);
log.error("error log = {}", name);

 

 

1. error Red 사용자 요청을 처리하는 중 발생한 문제
2. warn Yellow 처리 가능한 문제이지만, 향후 시스템 에러의 원인이 될 수 있는 문제
3. info Green 로그인이나 상태 변경과 같은 정보성 메시지
4. debug Green 개발시 디버깅 목적으로 출력하는 메시지
5. trace Green debug 보다 좀 더 상세한 메세지

 

특정 로그 레벨을 지정하면 해당 로그 레벨의 상위 우선순위 로그가 모두 출력된다.

예를 들어 특정 로그 레벨을 info로 지정하면 info, warn, error 로그가 전부 출력된다.
즉 특정 로그 레벨이 info라면 아래와 같이 출력된다.

 

System.out.println()을 사용하지 않고 logging을 사용하는 이유

그렇다면 왜 굳이 println문으로 찍으면 편할 것을 굳이 logging을 이용할까요? 


logging을 사용했을 때의 장점

  1. 스레드 정보, 클래스 이름 같은 부가 정보를 함께 볼 수 있고, 출력 모양을 조정할 수 있다.
  2. 로그 레벨에 따라 개발서버에서는 모든 로그를 출력하고, 운영서버에서는 출력하지 않는 등 로그를 상황에 맞게 조절할 수 있다.
  3. 시스템 아웃 콘솔에만 출력하는 것이 아니라, 파일이나 네트워크 등, 로그를 별도의 위치에 남길 수 있다.
  4. 특히 파일로 남길 때에는 일별, 특정 용량에 따라 로그를 분할하는 것도 가능하다.
  5. println을 썼을 때보다 내부 버퍼링, 멀티 스레드 등의 환경에서 훨씬 좋다

 

리팩토링 기법 3가지

1. 메소드 추출 extract method

- 조건문이 길 때

- 하나의 메소드가 2개 이상의 기능을 할 때

setName(), : name 이 null 일 때 홍길동을 넣고

 

2. 명명

3. 긍정문 

반응형

'Spring' 카테고리의 다른 글

240516  (0) 2024.05.17
240513(@JsonNaming, @JsonProperty)  (0) 2024.05.13
240503(DAO, DTO)  (1) 2024.05.03
의존성 주입 및 Rest API  (0) 2024.05.02
Aunotation 키워드  (0) 2024.04.30