HomeAboutMeBlogGuest
© 2025 Sejin Cha. All rights reserved.
Built with Next.js, deployed on Vercel
logback 설정(레벨에 따른 파일 분류 안되는 문제)

logback 설정(레벨에 따른 파일 분류 안되는 문제)

 
 
조건
  • profile에 따른 로깅 설정
  • 로깅 레벨에 따른 로깅 설정(prod profile에서만)
 

Profile

  1. prod(aws ec2)
  • file 기반
    • ERROR level
      • filename : error.log
    • 나머지 level
      • filename : yyyy-MM-dd_%i.rg.log (일자 별 rollingpolicy 적용)
 
  1. local, dev, test
  • console 기반
 
설정 코드
logback-spring.xml
 
level logging 방식
  1. levelfilter
error level 로그에 대해서만 출력
 
  1. ThresholdFilter
error level, error level보다 높은 레벨의 로그에 대하여만 출력
 
→ 둘다 동작 x

테스트 결과 문제점

(file 로깅 테스트)
rg.log
notion image
레벨에 따른 로그 파일 분류가 이루어지지 않음..
error.log 생성 안 됨
 
 
 
++
rollingpolicy 설정 추가..
... <property name="LOG_PATTERN" value="%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n"/> //console 기반 로깅 <springProfile name="default"> <appender name="CONSOLE_LOG" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern>${LOG_PATTERN}</pattern> </encoder> </appender> </springProfile> //file 기반 로깅 <springProfile name="prod"> <appender name="FILE_LOG" class="ch.qos.logback.core.rolling.RollingFileAppender"> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>info</level> </filter> <!-- <file>${LOG_PATH}/rg.log</file> --> <file>log/rg.log</file> <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> <!-- <fileNamePattern>${LOG_PATH}/%d{yyyy-mm-dd}_%i.rg.log</fileNamePattern>--> <fileNamePattern>log/%d{yyyy-MM-dd}_%i.rg.log</fileNamePattern> <maxFileSize>100MB</maxFileSize> <maxHistory>15</maxHistory> </rollingPolicy> <encoder> <pattern>${LOG_PATTERN}</pattern> </encoder> </appender> </springProfile> //file 기반 로깅 - error log <springProfile name="prod"> <appender name="ERROR_FILE_LOG" class="ch.qos.logback.core.rolling.RollingFileAppender"> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>ERROR</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> <!-- <file>${LOG_PATH}/error.log</file>--> <file>log/error.log</file> <param name="MaxBackupIndex" value="2"/> <encoder> <pattern>${LOG_PATTERN}</pattern> </encoder> </appender> </springProfile> //default profile <springProfile name="default, test"> <root level="info"> <appender-ref ref="CONSOLE_LOG"/> </root> </springProfile> //prod profile <springProfile name="prod"> <root level="info"> <appender-ref ref="FILE_LOG"/> <appender-ref ref="ERROR_FILE_LOG"/> </root> </springProfile>
<filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>error</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter"> <level>error</level> </filter>