자바에서 로깅할 때 쓰는 라이브러리로 logger, log4j, logback, slf4j 등이 있다.
그중에서 많이 쓰는 Log4j와 Logback에 대해서 알아 보자
Log4j
주요 특징
1. 멀티스레드 환경에서 안전
2. 다양한 내보내기 기능(파일, 콘솔, 원격서버, 이메일 등)
3. 6가지의 계층 로그 메시지 레벨
주요 클래스
1. Logger(Category)
- 실제 로그 기능을 수행
- 다양한 출력 방식 지원
2. Appender
- 로그 출력 위치 지정
3. Layout
- 로그 출력 포맷 지정
로깅 레벨
1. FATAL
- 크리티컬한 오류
2. ERROR
- 일반 에러
3. WARN
- 에러가 아닌 경고
4. INFO
- 일반 정보
5. DEBUG
- 상세한 일반 정보
6. TRACE
- 경로 추적
Logback
log4j를 바탕으로 새롭게 만든 로깅 라이브러리
주요 장점
1. log4j에 비해 약 10배 정도 빠르게 수행 및 메모리 효율성 향상
2. 더욱 높은 레벨의 테스트 검증 가능
3. 설정 파일 변경시, 서버 재기동 없이 변경 내용 자동 갱신
4. 서버 중지 없이 I/O Failure에 대한 복구 지원
5. 오래된 로그 자동 삭제 및 Rolling 백업 처리
설정 파일 작성 방법
- XML을 이용한 설정 (logback.xml, logback-test.xml)
- Groovy 언어를 이용한 설정 (logback.groovy)
설정 파일 우선순위
logback-test.xml -> logback.groovy -> logback.xml
(위의 파일이 classpath에 존재하지 않을 경우, com.qos.logback.classic.spi.Configurator 인터페이스의 구현체를 찾는다.
위 과정을 찾는데 실패한 경우, BasicConfigurator를 설정한다.)
logback 자동 설정하기
<!-- logback.xml -->
<configuration>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<root level="debug">
<appender-ref ref="STDOUT" />
</root>
</configuration>