개발환경 : Spring Boot, thymeleaf
Logback 이란?
Java에서 사용하는 로깅 라이브러리인 log4j 후속 버전이다.
Spring Boot 에 기본으로 설정되어 있어서 별도의 라이브러리를 추가하지 않아도 사용할 수 있다.
아래는 Spring Boot thyemelaf 설정까지 완료된 다음 시점입니다.
Test 를 위한 Controller, templates/ 경로에 test.html 을 만들었습니다.
1. resources/ 경로에 logback-spring.xml 파일을 생성한다.
2. logback-spring.xml 에 로그백 설정하기
<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true">
<property name="CONSOLE_PATTERN" value="%d{yyyy-MM-dd HH:mm:ss.SSS} %magenta([%thread]) %highlight([%-3level]) %logger{5} - %msg %n" />
<!-- Console appender 설정 -->
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<Pattern>${CONSOLE_PATTERN}</Pattern>
</encoder>
</appender>
<logger name="com.test.controller" level="WARN" additivity="false">
<appender-ref ref="STDOUT" />
</logger>
<root level="INFO">
<appender-ref ref="STDOUT"/>
</root>
</configuration>
<appender name="STDOUT" class=" ch.qos.logback.core.ConsoleAppender "> ... </appender>
<appender> 태그는 Log 메세지가 출력될 대상을 결정한다.
- ch.qos.logback.core.ConsoleAppender : 콘솔창에 로그를 보여준다.
- ch.qos.logback.core.FileAppender : 지정된 파일에 로그를 저장한다. 최대 보관 일 수 등 설정할 수 있다.
- ch.qos.logback.core.rolling.RollingFileAppender : 여러개의 파일을 롤링, 순회하면서 로그를 저장한다.
- ch.qos.logback.classic.net.SMTPAppender : 로그를 메일에 찍어 보낸다.
- ch.qos.logback.classic.db.DBAppender : DB 에 로그를 저장한다.
가장 많이 사용하는건 ch.qos.logback.core.ConsoleAppender 과 ch.qos.logback.core.rolling.RollingFileAppender 이다.
name 속성을 통해 property 값이나 추가할 logger 의 이름을 설정한다.
<root level="INFO"> ... </root>
<root> 태그는 전역 logger 를 설정하기 위한 태그이다.
전역 logger 에 대해선 INFO Level 의 log 가 찍힌다.
<logger name="com.test.controller" level="WARN" additivity="false"> ... </logger>
<logger> 태그는 name 속성을 통해 class 별로 log 를 분리할 수 있다.
본인은 com.test.controller class 에 대한 logger 를 추가했다.
주의할점은 기본적으로 appender는 누적되는 성질을 가지고 있다.
logger 는 자신에게 부착된 appender 이외에 자신의 상위 logger 의 appender 에게
로그를 전달한다. 그러므로 같은 appender 를 다른 logger 에 등록한다면
로그의 중복출력에 주의해야 한다.
이러한 상위 logger 에게 전달하지 않기 위해서는 "additvity" 속성을 false 로 줘야한다.
=> additivity="false"
<property name="" value="" />
logger 에서 사용될 상수 변수이다.