본문 바로가기

Development/Management

SLF4J 사용하기.

System.out.println() 으로 로그를 찍는 방법과 로깅툴을 사용하는 방법의 성능은 천지차이이다.
System.out.println() 을 사용할때와 SLF4J 를 사용할때는 성능과 속도면에서 수십배의 차이가 생긴다.
간단한 시스템이라면 몰라도 조금만 규모가 커지면 서버가 감당해야 할 스트레스가 굉장히 커진다.
(로깅의 가독율이나 효율은 둘째 치고서라도.)

사용방법은
먼저 라이브러리를 추가한뒤 소스상에서,

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class GatheringResource {
    // SLF4J Logging
    private Logger logger = LoggerFactory.getLogger(GatheringResource.class);
    logger.info("hello~!");
    ..........

를 추가한다.

log4j.properties 파일을 생성한 뒤 WEB-INF/classes 디렉토리 밑에 둔다.


log4j.properties 의 예)
### Root Logger로 stout, rolling으로 셋팅
log4j.rootLogger=DEBUG, stout, rolling

#### 콘솔 Log
log4j.appender.stout=org.apache.log4j.ConsoleAppender

#### INFO 이상 레벨에서만 찍는다.
log4j.appender.stout.Threshold=INFO

#### 출력 패턴 설정
log4j.appender.stout.layout=org.apache.log4j.PatternLayout
log4j.appender.stout.layout.ConversionPattern=%-5p at %C{3}.%M(%13F:%L) %3x - %m%n

#### Log File 설정
log4j.appender.rolling=org.apache.log4j.DailyRollingFileAppender

#### Log File 위치
#log4j.appender.rolling.File=D:/log/tobit/tobit.log
log4j.appender.rolling.File=/home/xxxxxxxx/logs/s-platform.log

#### Log File 뒤에 날짜 패턴 추가
log4j.appender.rolling.DatePattern='.'yyyy-MM-dd

#### Log File의 최대 사이즈
#### 300KB 넘을경우 뒤에 _1, _2 숫자가 붙는다.
log4j.appender.rolling.MaxFileSize=300KB

#### Tomcat Restart시 새로쓸껀지 말껀지
#### True 기존파일에 추가
#### #False 새로씀
log4j.appender.rolling.Append=false

#### 출력 패턴 설정
log4j.appender.rolling.layout=org.apache.log4j.PatternLayout
log4j.appender.rolling.layout.ConversionPattern=[%d] %-5p at %C{3}.%M(%13F:%L) %3x - %m%n

나같은 경우는 소스상에서 정의한 info 이외에 시스템에서 발생하는 DEBUG 급의 메시지도 모두 로깅으로 남긴다.
언제 JDBC connection 을 가져왔으며, 어떤 메소드에서 transaction 을 발생시켰는지,
호출된 쿼리문은 어떤것인지 등등 시스템의 상황을 한눈에 파악할 수 있다.