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을 사용했을 때의 장점
- 스레드 정보, 클래스 이름 같은 부가 정보를 함께 볼 수 있고, 출력 모양을 조정할 수 있다.
- 로그 레벨에 따라 개발서버에서는 모든 로그를 출력하고, 운영서버에서는 출력하지 않는 등 로그를 상황에 맞게 조절할 수 있다.
- 시스템 아웃 콘솔에만 출력하는 것이 아니라, 파일이나 네트워크 등, 로그를 별도의 위치에 남길 수 있다.
- 특히 파일로 남길 때에는 일별, 특정 용량에 따라 로그를 분할하는 것도 가능하다.
- println을 썼을 때보다 내부 버퍼링, 멀티 스레드 등의 환경에서 훨씬 좋다
리팩토링 기법 3가지
1. 메소드 추출 extract method
- 조건문이 길 때
- 하나의 메소드가 2개 이상의 기능을 할 때
setName(), : name 이 null 일 때 홍길동을 넣고
2. 명명
3. 긍정문
반응형