핵심 개념
- SLF4J
- logback.xml
- Appender
- Logger
SLF4J란?
- logging 관련 라이브러리는 다양하다.
- 이러한 라이브러리들을 하나의 통일된 방식으로 사용할 수 있는 방법을 SLF4J는 제공한다.
- SLF4J는 로깅 Facade이다.
- 로깅에 대한 추상 레이어를 제공하는 것이고 interface의 모음이다.
로그 라이브러리를 변경해도 applicaiton 코드를 변경하지 않아도 된다.
maven에 SLF4J와 logback의존성 추가하기
maven에 SLF4J와 logback의존성 추가하기
- 참고로 logback-classic 1.2.3은 이미 slf4j-api 1.7.25에 대한 의존성을 가지고 있기 때문에 slf-j-api를 추가할 필요는 없다.
- Spring은 기본적으로 아파치 재단의 commons-logging을 사용한다.
- logback라이브러리를 사용하려면 제거를 해야한다.
- Spring라이브러리에서 commons-logging을 제거하면, Spring을 사용할 때 commons-logging라이브러리를 찾으면서 오류가 발생한다.
- 이러한 오류를 제거하기 위해서 jcl-over-slf4j를 추가한다.
logback 설정
logback 설정
- logback.xml
- Appender 설정
- logger 설정
- root 설정
Appender
- ConsoleAppender : 콘솔에 로그를 어떤 포맷으로 출력할지를 설정할 때 사용한다.
- FileAppender : 파일에 로그를 어떤 포맷으로 출력할지를 설정한다.
- RollingFileAppender : 로그의 양이 많아지면, 하나의 파일로 관리하기 어려워지는 경우가 생긴다.
이런 문제를 해결하기 위해 하루 단위로 로그를 관리하고자 할 경우 사용된다.
ConsoleAppender 설정
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<Pattern>%d{HH:mm} %-5level %logger{36} - %msg%n</Pattern>
</encoder>
</appender>
%logger-> logger이름 축약
{36} 최대 자리수
%-5level 로그 레벨을 5의 고정폭 값으로 출력
%msg message의 alias -> 출력 메시지
%n -> 줄바꿈
RollingFileAppender 설정
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>access.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>access-%d{yyyy-MM-dd}.log</fileNamePattern>
<maxHistory>30</maxHistory>
</rollingPolicy>
<encoder>
<Pattern>%d{HH:mm} %-5level %logger{36} - %msg%n</Pattern>
</encoder>
</appender>
Log Level
- trace : debug보다 세분화된 정보
- debug : 디버깅하는데 유용한 세분화된 정보
- info : 진행상황 같은 일반 정보
- warn : 오류는 아니지만 잠재적인 오류 원인이 될 수 있는 경고성 정보
- error : 요청을 처리하는 중 문제가 발생한 오류 정보
로그 레벨 설정과 root 설정
<logger name="org.springframework" level="info"/>
<logger name="kr.or.connect" level="debug"/>
<root level="debug">
<appender-ref ref="CONSOLE"/>
<appender-ref ref="FILE"/>
</root>
Logger 객체 선언
- 로그를 남기고자 하는 클래스에 로거 객체를 필드로 선언한다.
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
.......
private Logger logger = LoggerFactory.getLogger(this.getClass());
로그 출력 메소드
- 문자열 결합을 위해 '+'연산자를 사용하지 않는다.
- 로그로 남길 변수의 수만큼 {} 를 이용한다.
- 로그의 수준에 따라 debug(), info(), warn(), error()메소드를 이용한다.
예시
logger.trace("{} {} 출력", "값1", "값2");
logger.debug("{} {} 출력", "값1", "값2");
logger.info("{} {} 출력", "값1", "값2");
logger.warn("{} {} 출력", "값1", "값2");
logger.error("{} {} 출력", "값1", "값2");
'프로젝트 정리 > Naver Boost Course' 카테고리의 다른 글
파일업로드 컨셉설명 (0) | 2021.04.18 |
---|---|
slf4j를 이용한 로그남기기 (0) | 2021.04.15 |
로깅이란 (0) | 2021.04.15 |
file upload의 확장자검사 및 썸네일노출 (0) | 2021.03.30 |
file upload방법의 이해 (0) | 2021.03.30 |