Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
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 29 30 31
Tags more
Archives
Today
Total
관리 메뉴

Formoat's Open Blog

Logback SLF4J - 로그 남기기 본문

Java/Spring

Logback SLF4J - 로그 남기기

snd-snd 2019. 10. 8. 23:10

# 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 : classicaccess의 공통 라이브러리
  • 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 파일 생성시 참고

 

https://logback.qos.ch/

 

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
Comments