Formoat's Open Blog
Logback SLF4J - 로그 남기기 본문
# Log
과거 항해일지를 통나무에 기록하는 것을 log(book)이라 하여 주요 관리가 필요한 여러 작업에서 다양하게 쓰인다.
프로그램에서 발생하는 사건을 기록함으로써 프로그램이 실행되는 동안 정확한 상황과 상태 정보를 제공한다.
프로그램 개발시에는 발생하는 문제를 추적하는데 사용이 되며, 완료된 프로그램을 운영할 때는 모니터링 정보를
기록하는데 사용이 된다. 이러한 로그 기록은 파일 또는 데이터베이스 등 저장이 가능해 로그 기록을 저장한 뒤
후에 로그 기록을 분석해 통계 자료에도 활용이 가능하다.
1) Java Commons Logging (JCL)
- 아파치 재단에서 개발자들에게 제공하는 공통 로깅 API (facade 역할)
- 특정 로깅 프레임워크에 종속되지 않게 함
- 많은 서드 파티 로깅 프레임워크들이 commons-logging 기반으로 구현됨
2) Simple Logging Facade for java (SLF4J)
- 기존의 commons-logging 단점 보완
- 스프링 또한 spring-context 에서 commons-logging 사용 하지 않음
- 공통 로깅 API (facade 역할)
Spring Legacy Project 로그 처리
Library | Description |
slf4j-api | 기본적인 slf4j 라이브러리들 |
jcl-over-slf4j | commons-logging api에 의존성이 있을 경우 slf4j 패키지의 jcl 클래스 및 메소드로 대체 사용 |
slf4j-log4j12 | slf4j와 log4j를 연동시켜주는 라이브러리 |
log4j | log4j 라이브러리 |
Spring Legacy Project Default pom.xml
# Logback
- Log4J 보다 성능이 10배 정도 빠르게 개선되고 메모리 점유도 보다 적게 사용
- JCL 이나 SLF4j를 구현하여 로그 출력 담당
- logback-core : classic와 access의 공통 라이브러리
- logback-classic : SLF4J API 구현
- logback-access
Logback Maven Dependency
<!-- https://mvnrepository.com/artifact/ch.qos.logback/logback-classic -->
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.2.3</version>
<scope>test</scope>
</dependency>
<!-- Spring Legacy Project Default pom.xml의
SLF4J Log4J 연동 라이브러리와 Log4J 라이브러리를 제거하고
Logback 라이브러리를 추가 -->
logback.xml 파일 생성시 참고
Documentation → The logback manual
→ Chapter 3: Logback configuration
→ Chapter 4: Appenders 등등 참고
※ Logback 설정파일은 크게 두 부분(Appender, logger)으로 나눌 수 있다.
1) Appenders : 로그 메시지를 출력할 대상 지정(콘솔, 파일, 원격 소켓 서버
Appender | Description |
org.apache.log4j.ConsoleAppender | 콘솔에 로그 메시지 출력 |
org.apache.log4j.FileAppender | 파일에 로그 메시지 기록 |
org.apache.log4j.RollingFileAppender | 파일에 로그 메시지 기록 (일정 크기가 되면 로그 파일 변경) |
org.apache.log4j.DailyRollingFileAppender | 파일에 로그 메시지 기록 (하루 단위로 로그 파일 변경) |
org.apache.log4j.net.SMTPAppender | 로그 메시지를 이메일로 전송 |
org.apache.log4j.DBAppender |
로그 메시지를 데이터베이스에 저장 |
2) logger : 로그의 주체로 로그 메시지를 Appender에 전달
- 로그 기록의 출력 범위를 설정한다.
- name 속성 : 로그 기록을 출력할 클래스
- level 속성 : 로그 기록 출력 레벨
Level | Description |
ERROR | 프로그램이 중지될 정도는 아닌 에러 이벤트 |
WARN | 잠재적인 위험 |
INFO | 대략적으로 프로그램의 진행 상황을 강조 |
DEBUG | 응용 프로그램을 디버깅하는 데 가장 유용한 세밀한 정보 |
TRACE | DEBUG보다 세분화된 정보 이벤트 |
'Java > Spring' 카테고리의 다른 글
Interceptor - 인터셉터 (0) | 2019.10.16 |
---|---|
Spring MVC (Model View Controller) - 스프링 MVC 패턴 (2) | 2019.10.10 |
Transaction - 트랜잭션 (0) | 2019.10.08 |
MyBatis - 마이바티스 (0) | 2019.10.07 |
hikari CP (0) | 2019.10.04 |