일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- pom.xml
- exceptiontransfer
- 인텔리제이
- Intellij
- 전자정부프레임워크
- 메이븐
- 스프링
- 자바스크립트 클래스
- REST API
- spring 설정 파일
- Spring boot
- Spring
- egov
- 자바스크립트 class
- 스프링 에러
- 오라클
- javascript class
- javascript
- 스프링부트 post api
- Oracle
- spring boot post api
- spring 에러
- 디자인 패턴
- 전자정부 샘플
- 자바스크립트
- javascript 클래스
- spring boot CRUD
- spring boot error
- spring boot rest api
- Spring REST API
- Today
- Total
빵구의 개발 메꾸기
slf4j VS log4j VS logback VS log4j2 본문
logging은 클라이언트에서 서버쪽으로 이벤트가 발생하여 데이터를 보낼 때 시스템의 상태에 대해 기록으로
남기는 것을 의미한다.
이 기록을 log라고 한다.
주로 시스템의 문제가 발생했을 시 log를 통해 원인을 파악하고 조치하기 위해 사용한다.
JDK 1.4 부터 logging 라이브러리가 내장되어 있지만 활용하기에 부족한 부분이 많고 유연하지 못한 부분이 존재했다.
또한 system.out.println() 메서드를 활용하여 기록을 남길 수 있지만 비효율적인 메모리사용과 안정적이지 못한
단점이 있기 때문에 개선하기 위해 log 관련 다양한 framework들이 생겨나게 되었다.
장점으로는 각 단계 별 상황에 맞는 메세지를 전달 가능하다.
<slf4j>
slf4j는 Simple Logging Facade For Java의 약자이며 logger의 추상체로써 다른 로깅 프레임워크의 인터페이스이다.
<logback>
logback은 java에서 logging을 하기 위한 라이브러리이며 slf4j의 구현체이다.
log4j 보다는 늦고 log4j 보다는 전에 개발 되었으며 log4j 보다 향상 된 성능과 필터링을 제공한다.
log 설정 변경 시 서버를 재시작할 필요가 없는 자동 리로드가 가능하다.
스프링부트에서는 기본으로 사용하고 있기 때문에 별도로 추가할 필요가 없다.
<log4j>
log4j는 제일 오래 된 logging framework이며 마찬가지로 slf4j의 구현체이다.
Log For Java의 약자이다.
2015년에 개발은 중단되었으나 사람들이 다년간 사용해온 가장 인기있는 라이브러리였다.
하지만 log level을 변경하게 되는 경우 서버를 재시작해야 되는 단점이 있다.
- 구조
Logger | log 메세지를 Appender에게 전달한다. |
Appender | 받은 log 메세지를 어디에 출력 할 것인지 결정한다. (File, Console, DB) |
Layout | 받은 log 메시지를 어디에 출력 할 것인지 결정했다면 어떤 형식으로 출력할 것인지 Layout을 결정한다. |
- log level 종류
FATAL | 매우 심각한 에러가 발생한 경우 메세지를 담을 때 사용 |
ERROR | 요청을 처리하는 중 문제 발생한 경우 메세지를 담을 때 사용 |
WARN | 실행에는 문제가 없지만 잠재적인 문제가 발생할 여지가 있는 경고성 메세지를 담을 때 사용 |
INFO | 정보성 메세지를 담을 때 사용 |
DEBUG | 개발 시 디버그 용도의 메세지를 담을 때 사용 |
TRACE | DEBUG level 보다 상세한 메세지를 담을 때 사용 |
level 순서 : FATAL > ERROR > WARN > INFO > DEBUG > TRACE
<log4j2>
log4j2는 가장 최근에 나온 logging 라이브러리이며 마찬가지로 slf4j의 구현체이고 제일 빠르다.
멀티쓰레드 환경에서 압도적으로 처리량이 많고 대기 시간이 짧다.
그렇기에 대용량 트래픽을 처리하는 환경에서 주로 사용한다.
log4j와 logback의 단점을 보완하여 개발되었다.
람다식을 활용할 수 있으며 고급 필터링 옵션을 제공한다.
logback과 동일하게 log 설정 변경 시 서버를 재시작할 필요가 없는 자동 리로드가
가능하며 필터링을 제공한다.
log level은 log4j와 동일하다.
'BACK-END > JAVA' 카테고리의 다른 글
Expected a string but was BEGIN_ARRAY 에러 해결 (0) | 2022.05.26 |
---|---|
HttpURLConnection 활용 (0) | 2022.05.26 |
JAVA 쿠키(Cookie) 등록, 조회, 수정, 삭제 활용 (0) | 2022.05.23 |
Jackson 라이브러리 ObjectMapper 활용 (0) | 2022.05.20 |
윈도우 JDK 버전 변경하기 (0) | 2022.04.20 |