코딩마을방범대
Log - (2) Logback 본문
728x90
Logback이란?
- 오픈소스 로깅 프레임워크이며 SLF4J의 구현체이자, 스프링부트에 기본으로 내장되어 있는 로깅 라이브러리
- log4j보다 좋은 성능을 가짐(log4j: 2015년에 지원 중단)
SLF4J
- 로깅 추상 레이어를 제공하는 인터페이스
- slf4j 덕분에 애플리케이션은 어떤 로깅 라이브러리를 사용하던 같은 방법으로 로그를 남길 수 있는 것
(그래서 로그 라이브러리를 교체하는 일이 발생하더라도 애플리케이션의 코드가 변경될 필요가 없음)
사용 방법
1. build.gradle
// https://mvnrepository.com/artifact/ch.qos.logback/logback-classic
testImplementation group: 'ch.qos.logback', name: 'logback-classic', version: '1.4.7'
2. logback.properties
LOG_PATH=/Users/dbkim/Desktop/TASK/LOG
LOG_FILE=REQUEST_LOG
LOG_PATTERN=%d %p [%M] %m %n
3. logback-spring.xml
- logback.xml 말고 logback-spring.xml로 만들 경우 스프링부트의 설정 부분에서 제어가 가능해져 확장성이 커진다고 함
(-spring을 안붙일 경우 스프링 부트에 대한 설정 전에 logback이 설정된다고 함)
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<property resource="logback.properties"/>
<appender name="request-log" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 파일 경로 설정 -->
<file>${LOG_PATH}/${LOG_FILE}.log</file>
<!-- 출력 패턴 설정 -->
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>${LOG_PATTERN}</pattern>
</encoder>
<!-- Rolling 정책 -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- .gz, .zip 등을 넣으면 자동 일자별 로그파일 압축 -->
<fileNamePattern>${LOG_PATH}/${LOG_FILE}.%d{yyyy-MM-dd}.log.%i</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<!-- 파일당 최고 용량 kb, mb, gb -->
<maxFileSize>10MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
<!-- 일자별 로그파일 최대 보관주기(~일), 해당 설정일 이상된 파일은 자동으로 제거 -->
<maxHistory>30</maxHistory>
</rollingPolicy>
</appender>
<!-- 기본 출력 설정 -->
<root>
<level value="INFO" />
<appender-ref ref="request-log" />
</root>
</configuration>
참고사이트
728x90
'💡 백엔드 > Java' 카테고리의 다른 글
JAVA의 @ExceptionHandler (0) | 2023.05.28 |
---|---|
Java의 Interceptor (0) | 2023.05.28 |
SpringBoot Custom Annotation 생성하기 - (1) 파라미터에 부여 (0) | 2023.05.28 |
JPA가 대문자 테이블명을 인식하지 못할 때 (0) | 2023.05.28 |
SpringBoot의 QueryDSL (0) | 2023.05.28 |