-
[Spring Boot] request, response 로그 남기기2 - logback(파일로 로그 남기기)개발기록 2022. 9. 14. 14:23반응형728x90
개요
앞서 했던 것에 이어서 로그를 파일로도 남기는 법에 대해 정리해보자.
참고:
https://tlatmsrud.tistory.com/64
https://awse2050.tistory.com/72
개발 순서 및 코드
1. application.properties
logback-spring.xml에서 사용할 property를 설정해준다.
# log level log.config.level=info # log path log.config.path=/logs # log filename log.config.filename=log_file log.config.error.filename=error_file
2. /resources/logback-spring.xml
resources 하위에 logback-spring.xml 파일을 생성 후 아래와 같이 코드를 작성한다.
필요에 따라서 수정하여 사용한다.
<?xml version="1.0" encoding="UTF-8"?> <!-- 15초마다 설정 파일의 변경을 확인 하여 변경시 갱신 --> <configuration scan="true" scanPeriod="15 seconds"> <!-- Server Log Config --> <springProfile name="local"> <property resource="application.properties"/> <!-- log level --> <property name ="LOG_LEVEL" value = "${log.config.level}"/> <!-- log file path --> <property name="LOG_PATH" value="${log.config.path}"/> <!-- log file name --> <property name="LOG_FILE_NAME" value="${log.config.filename}"/> <!-- err log file name --> <property name="ERR_LOG_FILE_NAME" value="${log.config.error.filename}"/> <!-- log pattern --> <property name ="LOG_PATTERN" value = "%-5level %d{yyyy-MM-dd HH:mm:ss} [${HOSTNAME}] [%thread] [%logger{0}:%line] - %msg%n"/> <!-- 패턴에 클래스 경로 추가할 경우 --> <!-- property name ="LOG_PATTERN" value = "%-5level %d{yyyy-MM-dd HH:mm:ss} [${HOSTNAME}] [%thread] [%C] [%logger{0}:%line] - %msg%n"/> --> <appender name="DEV_CONSOLE" class="ch.qos.logback.core.ConsoleAppender"> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <pattern>${LOG_PATTERN}</pattern> </encoder> </appender> <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <!-- 파일경로 설정 --> <file>${LOG_PATH}/${LOG_FILE_NAME}.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_NAME}.%d{yyyy-MM-dd}_%i.log</fileNamePattern> <!-- 파일 크기 지정할 때 사용 --> <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> <!-- 파일당 최고 용량 kb, mb, gb --> <maxFileSize>10MB</maxFileSize> </timeBasedFileNamingAndTriggeringPolicy> <!-- 일자별 로그파일 최대 보관주기(~일), 해당 설정일 이상된 파일은 자동으로 제거--> <maxHistory>30</maxHistory> <!--<MinIndex>1</MinIndex> <MaxIndex>10</MaxIndex>--> </rollingPolicy> </appender> <appender name="Error" class="ch.qos.logback.core.rolling.RollingFileAppender"> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <!-- 에러로그를 설정하고 로그의 레벨이 맞으면 onMatch, 아니라면 onMismatch --> <level>error</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> <file>${LOG_PATH}/${ERR_LOG_FILE_NAME}.log</file> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <pattern>${LOG_PATTERN}</pattern> </encoder> <!-- Rolling 정책 --> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <fileNamePattern>${LOG_PATH}/${ERR_LOG_FILE_NAME}.%d{yyyy-MM-dd}_%i.log</fileNamePattern> <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> <maxFileSize>10MB</maxFileSize> </timeBasedFileNamingAndTriggeringPolicy> <maxHistory>30</maxHistory> </rollingPolicy> </appender> <root level="${LOG_LEVEL}"> <appender-ref ref="DEV_CONSOLE"/> <appender-ref ref="FILE"/> <appender-ref ref="Error"/> </root> </springProfile> </configuration>
3. 결과
728x90'개발기록' 카테고리의 다른 글
[Spring Boot] Jasypt를 통한 암복호화 - application.properties에서 db 암호화 (0) 2022.09.21 [Spring Boot] Gradle 프로젝트에 외부 라이브러리(*.jar) 추가하는 방법 (0) 2022.09.21 [Spring Boot] 스케쥴러를 이용한 스케쥴링(Scheduler) (0) 2022.09.19 [Spring Boot] request, response 로그 남기기1 - Console (0) 2022.09.13 [Spring Boot] application.properties에서 *.java로 property 가져오기 (0) 2022.09.06