여기가 매우 잘 정리되어 있어서 주소를 첨부함.
https://devel-repository.tistory.com/50
에러 로그만 분리하는 방법에 대한 더 쉬운 설명
내 입맛에 맛는 최종 결과물은 일단 아래와 같이 만들어졌다.
logback-spring.xml 이다.
아직 환경 분리는 안했다.
<?xml version="1.0" encoding="UTF-8"?>
<!-- 60 초마다 설정파일의 변경을 확인 후 갱신 -->
<configuration scan="true" scanPeriod="60 seconds">
<!--
LOG_DIR을 직접 변수로 선언하는 것 대신에
application.yml 에서 logging.file.path: log 로 설정하여 바로 ${LOG_PATH}로 사용해도 된다.
-->
<property name="LOG_DIR" value="./log"/>
<!-- CONSOLE appender -->
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<!-- encoders are assigned the type
ch.qos.logback.classic.encoder.PatternLayoutEncoder by default -->
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %highlight(%-5level) %cyan(%logger{36}) -%kvp- %msg%n</pattern>
</encoder>
</appender>
<!-- 에러의 경우 파일 로그 처리 -->
<appender name="ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOG_DIR}/error.log</file>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>ERROR</level>
<onMatch>ACCEPT</onMatch>
<onMissMatch>DENY</onMissMatch>
</filter>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>%-5level %d{yyyy-MM-dd HH:mm:ss}[%thread] [%logger{0}:%line] - %msg%n</pattern>
</encoder>
<!-- rolling 정책 -->
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>${LOG_DIR}/application.log.%d{yyyy-MM-dd}.%i.log}</fileNamePattern>
<maxHistory>${logging.application.file.max-history:-30}</maxHistory>
<maxFileSize>${logging.mta.file.max-size:-100MB}</maxFileSize>
</rollingPolicy>
</appender>
<appender name="QUERY" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOG_DIR}/query.log</file>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>%-5level [%d{yy-MM-dd HH:mm:ss}] %msg%n</pattern>
</encoder>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>${LOG_DIR}/query.log.%d{yyyy-MM-dd}.%i.log}</fileNamePattern>
<maxHistory>${logging.query.file.max-history:-30}</maxHistory>
<maxFileSize>${logging.mta.file.max-size:-100MB}</maxFileSize>
</rollingPolicy>
</appender>
<!-- 로거 설정 -->
<!-- about hibernate query log -->
<!-- 쿼리 결과 : level 을 TRACE 로 변경하면 결과 로그가 생성된다. -->
<logger name="org.hibernate.type.descriptor.sql.BasicExtractor" level="DEBUG" additivity="false">
<appender-ref ref="QUERY"/>
</logger>
<!-- 쿼리 파라미터 -->
<logger name="org.hibernate.type.descriptor.sql.BasicBinder" level="TRACE" additivity="false">
<appender-ref ref="QUERY"/>
</logger>
<!-- 쿼리문 -->
<logger name="org.hibernate.SQL" level="DEBUG" additivity="false">
<appender-ref ref="QUERY"/>
</logger>
<!-- root 레벨 설정 -->
<root level="INFO">
<appender-ref ref="STDOUT"/>
<appender-ref ref="ERROR"/>
</root>
</configuration>
기존의 Feign 연습 레포에 로그 설정까지 추가함.
'Backend > spring boot' 카테고리의 다른 글
redis, sentinel 설치 (0) | 2024.03.11 |
---|---|
[Spring Cloud] OpenFeign 사용법 (0) | 2024.03.10 |
스프링에서 비동기 처리하기 @Async (0) | 2024.03.09 |
Spring batch란? (0) | 2024.03.07 |