Skip to content

Commit

Permalink
Merge pull request #5 from prgrms-be-devcourse/Logger
Browse files Browse the repository at this point in the history
로거 설정 추가
  • Loading branch information
skfk286 authored Sep 11, 2024
2 parents 4c0fec8 + 1cad64f commit 760e7fd
Show file tree
Hide file tree
Showing 2 changed files with 107 additions and 0 deletions.
3 changes: 3 additions & 0 deletions src/main/resources/application.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,9 @@ spring:
password: ${LOCAL_PASSWORD}
driver-class-name: com.mysql.cj.jdbc.Driver

profiles:
active: local # 또는 dev

jpa:
show-sql: true # JPA가 실행하는 SQL 쿼리를 출력하도록 설정
properties:
Expand Down
104 changes: 104 additions & 0 deletions src/main/resources/logback-spring.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,104 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!-- 60초마다 설정 파일의 변경을 확인하여 변경시 갱신 -->
<configuration scan="true" scanPeriod="60 seconds">
<!-- 로그 패턴에 색상 적용 %clr(pattern){color} https://logback.qos.ch/manual/layouts.html#coloring -->
<conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter" />

<!-- springProfile 태그를 사용하여 profile 별 property 값 설정 -->
<springProfile name="local">
<!-- local log file path -->
<property name="LOG_PATH" value="/gc-coffee/log"/>
</springProfile>
<springProfile name="dev">
<!-- dev log file path -->
<property name="LOG_PATH" value="/home/ge-coffee/log"/>
</springProfile>

<!-- Environment 내의 프로퍼티들을 개별적으로 설정 -->
<springProperty scope="context" name="LOG_LEVEL" source="logging.level.root"/>

<!-- log file name -->
<property name="LOG_FILE_NAME" value="gc-coffee"/>
<!-- err log file name -->
<property name="ERR_LOG_FILE_NAME" value="gc-coffee_err"/>
<!-- console log pattern -->
<property name="CONSOLE_LOG_PATTERN" value="[%d{yyyy-MM-dd HH:mm:ss}:%-3relative] %clr(%-5level) %clr(${PID:-}){magenta} %clr(---){faint} %clr([%15.15thread]){faint} %clr(%-40.40logger{36}){cyan} %clr(:){faint} %msg%n"/>
<!-- file log pattern -->
<property name="FILE_LOG_PATTERN" value="[%d{yyyy-MM-dd HH:mm:ss}:%-3relative] %-5level ${PID:-} --- [%15.15thread] %-40.40logger{36} : %msg%n"/>

<!-- Console Appender -->
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
</encoder>
</appender>

<!-- File 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>${FILE_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.gz</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<!-- 파일당 최고 용량 kb, mb, gb -->
<maxFileSize>10KB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
<!-- 일자별 로그 파일 최대 보관주기(~일), 해당 설정일 이상된 파일은 자동으로 제거 -->
<maxHistory>30</maxHistory>
<!-- 전체 파일 크기를 제어하며, 전체 크기 제한을 조과하면 가장 오래된 파일을 삭제 -->
<totalSizeCap>1GB</totalSizeCap>
</rollingPolicy>
</appender>

<!-- 에러의 경우 파일에 로그 처리 -->
<appender name="ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender">
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>error</level>
<onMatch>ACCEPT</onMatch> <!-- 로그가 에러일 경우에만 수락 -->
<onMismatch>DENY</onMismatch> <!-- error level 보다 낮으면 무시(DENY) -->
</filter>
<file>${LOG_PATH}/${ERR_LOG_FILE_NAME}.log</file>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>${FILE_LOG_PATTERN}</pattern>
</encoder>

<!-- Rolling 정책 -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- .gz .zip 등을 넣으면 자동 일자별 로그파일 압축 -->
<fileNamePattern>${LOG_PATH}/${ERR_LOG_FILE_NAME}.%d{yyyy-MM-dd}_%i.log</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<!-- 파일당 최고 용량 kb, mb, gb -->
<maxFileSize>10KB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
<!-- 일자별 로그 파일 최대 보관주기(~일), 해당 설정일 이상된 파일은 자동으로 제거 -->
<maxHistory>60</maxHistory>
</rollingPolicy>
</appender>

<!-- root 레벨 설정 -->
<root level="${LOG_LEVEL}">
<appender-ref ref="CONSOLE"/>
<!-- <appender-ref ref="FILE"/>-->
<!-- <appender-ref ref="ERROR"/>-->
</root>

<!-- spring -->
<logger name="org.springframework" level="WARN" />

<!-- datasource -->
<logger name="org.hibernate" level="WARN "/>
<logger name="com.zaxxer.hikari" level="WARN "/>

<!-- gc-coffee -->
<logger name="org.example.gc_coffee" level="TRACE"/>

<logger name="ROOT" level="DEBUG" />
</configuration>

0 comments on commit 760e7fd

Please sign in to comment.