1. Logback 설정파일 형식
2. appender
3. encoder
4. root
5. 로그 레벨
설명1) TRACE > DEBUG > INFO > WARN > ERROR > OFF (OFF도 존재)
6. 패턴
추가설명1) %-5lovel: 로그레벨의 가장 긴 길이가 5길이여서 5로 설정
추가설명2) %logger{30} 으로 지정할 시, 긴 패키지명을 압축해준다.
7. 로그 색 설정하기
- %highlight를 이용하여 로그 레벨에 따른 색을 줄수 있다.
- %black, %red, %green, %yellow, %blue, %magenta, %cyan, %white, %gray, %boldRed, %boldGreen, %boldYellow, %boldBlue, %boldMagenta, %boldCyan, %boldWhite를 이용 할 수도 있다.
- 적용 범위는 ()로 %highlight([%-5level]) 이와 같이 사용 가능하다.
8. (실습) LOGGER 사용해보기
1) logback-spring.xml 설정
2) 프로젝트 내 LOGGER 호출
3) 로그 확인
추가테스트1) ConsoleAppender 외 RollingFileAppender 추가
<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="30 seconds"> <!-- logback 구현체가 설정을 확인하는 주기 -->
<property name="moduleId" value="intellij_springboot"/><!-- moduleId는 프로젝트가 설치된 폴더명 또는 구분할 수 있는 식별자이면 됨 -->
<property name="type" value="intellij"/><!-- 로그파일명을 구성하는 인자 -->
<property name="logback" value="logback"/><!-- log를 저장할 최종 디렉토리명 -->
<property name="logdir" value="C:\\Spring Boot\\IntelliJ_SpringBoot\\log"/>
<!-- Appenders -->
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>DEBUG</level>
</filter>
<encoder>
<pattern>%yellow([%d{yyyy-MM-dd HH:mm:ss.SSS}]) %highlight([%-5level]) [%thread] %cyan(%logger-{30}) %msg%n</pattern>
</encoder>
</appender>
<!-- RollingFileAppender -->
<appender name="DEBUG_LOG" class="ch.qos.logback.core.rolling.RollingFileAppender">
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>DEBUG</level>
</filter>
<file>${logdir}/${moduleId}/${logback}/debug_${type}.log</file>
<append>true</append>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${logdir}/${moduleId}/${logback}/debug_${type}.%d{yyyy-MM-dd}.gz</fileNamePattern>
<maxHistory>30</maxHistory>
</rollingPolicy>
<encoder>
<pattern>[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%-5level] [%thread] %logger %msg%n</pattern>
</encoder>
</appender>
<appender name="INFO_LOG" class="ch.qos.logback.core.rolling.RollingFileAppender">
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>INFO</level>
</filter>
<file>${logdir}/${moduleId}/${logback}/info_${type}.log</file>
<append>true</append>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${logdir}/${moduleId}/${logback}/info_${type}.%d{yyyy-MM-dd}.gz</fileNamePattern>
<maxHistory>30</maxHistory>
</rollingPolicy>
<encoder>
<pattern>[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%-5level] [%thread] %logger %msg%n</pattern>
</encoder>
</appender>
<appender name="WARN_LOG" class="ch.qos.logback.core.rolling.RollingFileAppender">
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>WARN</level>
</filter>
<file>${logdir}/${moduleId}/${logback}/warn_${type}.log</file>
<append>true</append>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${logdir}/${moduleId}/${logback}/warn_${type}.%d{yyyy-MM-dd}.gz</fileNamePattern>
<maxHistory>30</maxHistory>
</rollingPolicy>
<encoder>
<pattern>[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%-5level] [%thread] %logger %msg%n</pattern>
</encoder>
</appender>
<appender name="ERROR_LOG" class="ch.qos.logback.core.rolling.RollingFileAppender">
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>WARN</level>
</filter>
<file>${logdir}/${moduleId}/${logback}/error_${type}.log</file>
<append>true</append>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${logdir}/${moduleId}/${logback}/error_${type}.%d{yyyy-MM-dd}.gz</fileNamePattern>
<maxHistory>30</maxHistory>
</rollingPolicy>
<encoder>
<pattern>[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%-5level] [%thread] %logger %msg%n</pattern>
</encoder>
</appender>
<!-- TRACE > DEBUG > INFO > WARN > ERROR > OFF -->
<!-- Root Logger -->
<root level="INFO">
<appender-ref ref="console" />
<appender-ref ref="DEBUG_LOG" />
<appender-ref ref="INFO_LOG" />
<appender-ref ref="WARN_LOG" />
<appender-ref ref="ERROR_LOG" />
</root>
</configuration>
이슈1) C:\Spring Boot\IntelliJ_SpringBoot\log 경로에 로그가 별도로 저장되지 않는다.
해결방법) 파일경로 \\ 2개로 선언 <property name="logdir" value="C:\\Spring Boot\\IntelliJ_SpringBoot\\log"/>
'JAVA > SpringBoot' 카테고리의 다른 글
[SpringBoot] JUnit 설명 (0) | 2023.07.28 |
---|---|
[SpringBoot] Validation (유효성 검사/데이터 검증) (0) | 2023.07.27 |
[SpringBoot] (Chapter1) ORM, JPA, Spring Data JPA (0) | 2023.07.26 |
[SpringBoot] 서비스 구조 (0) | 2023.07.25 |
[SpringBoot] Lombok (0) | 2023.07.25 |