logback이란
SLF4J라는 인터페이스를 구현하는 구현체로
Logging Framework이다.
@SLF4J
라는 어노테이션을 사용한다.
ConsoleAppender
: 콘솔에 log를 출력
FileAppender
: 파일 단위로 log를 저장
RollingFileAppender
: log를 여러 파일로 나누어 저장
SMTPAppender
: log를 메일로 전송하여 기록
DBAppender
: log를 DB에 저장
DEBUG < INFO < WARN < ERROR
패키지 내부의 resources 패키지 밑에 logback-spring.xml 파일을 생성한다.
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<include resource="org/springframework/boot/logging/logback/base.xml"/>
<root level="INFO">
<appender-ref ref="CONSOLE" />
</root>
</configuration>
현재 로그의 레벨은 info로 설정해둔 상태이다.
<root level="INFO">
의 부분을 "DEBUG" 등으로 바꾸어
레벨을 변경하여 출력할 수 있다.
로그를 콘솔에만 출력시, 로그의 가독성도 떨어질 뿐 더러
기록이 남지 않기 때문에 이후에 확인하기 어렵다는 단점이 있다.
로그들의 기록을 파일로 남겨두면 이후 로그추적이 조금 더 수월해 질 수 있다.
*.log
이전에 만들어 두었던 logback-spring.xml파일에 FileAppender를 추가한다.
<!-- File appender -->
<appender name="FILE" class="ch.qos.logback.core.FileAppender">
<file>logs/ali.log</file>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
해당 설정은 기본적인 설정으로, logs/ali.log에 로그를 기록한다.
만약, 파일 저장 위치를 변경하고 싶다면 <file>logs/ali.log</file>
부분을
수정해주면 된다.
<appender name="ROLLING_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>logs/myapp.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>logs/ali.%d{yyyy-MM-dd}.log</fileNamePattern>
<maxHistory>30</maxHistory>
</rollingPolicy>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
해당 ROLLING 옵션은 매일 새로운 로그 파일을 생성하고, 최대 30일 동안의 로그 파일을
보관하는 설정으로 되어있다.
필요에 따라 'FileAppender'와 'ROLLING_FILE' 둘 중 하나를 선택해
사용할 수 있고,
일 단위로 로그를 저장하는게 로그 추적하기가 조금 더 수월해보여
ROLLING_FILE 옵션으로 설정하려고 한다.
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<include resource="org/springframework/boot/logging/logback/base.xml"/>
<appender name="ROLLING_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>logs/ali.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>logs/ali.%d{yyyy-MM-dd}.log</fileNamePattern>
<maxHistory>30</maxHistory>
</rollingPolicy>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<root level="INFO">
<appender-ref ref="CONSOLE" />
<appender-ref ref="ROLLING_FILE" />
</root>
<root level="INFO">
<appender-ref ref="CONSOLE" />
</root>
</configuration>
로그 파일은
해당 위치에 저장된다.
rollingPlicy
옵션은 이외에도 파일 사이즈 설정 등이 추가로 있으니
관심이 있다면 추가적으로 설정해두어도 좋을 것 같다.