서버 구축시 로그는 필수다..
요즘 자만해서 로그 설정을 안해놨더니 프론트에서 에러가 발생했는데
원인을 모르는...
그래서 다시 로그 설정을 해줬다.
우선 컨테이너에 설정된 로그 저장 경로와 호스트를 매핑시켜주기 위해 컴포즈 파일을 수정했다.
version: '3.7'
services:
redis:
image: redis
ports:
- 6379:6379
moa:
build:
context: .
dockerfile: ./Dockerfile
ports:
- 80:8081
volumes:
- /var/log/moa:/var/log/moa
depends_on:
- redis
networks:
default:
external:
name: bside-moa
그리고 logback 설정을 해줬다..
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<!-- local log file path -->
<property name="LOCAL_LOG_PATH" value="log" />
<!-- log file path -->
<property name="LOG_PATH" value="/var/log/moa" />
<!-- log file name -->
<property name="LOG_FILE_NAME" value="moa" />
<property name="ERROR_LOG_FILE_NAME" value="moa_error" />
<!-- pattern -->
<property name="LOG_PATTERN" value="%d{yyyy-MM-dd HH:mm:ss} [%thread] [%-5level] %logger{36} - %msg%n" />
<springProfile name="console-logging">
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>${LOG_PATTERN}</pattern>
</encoder>
</appender>
</springProfile>
<springProfile name="local-file-logging">
<appender name="FILE_LOG" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 파일경로 설정 -->
<file>${LOCAL_LOG_PATH}/${LOG_FILE_NAME}.log</file>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>DEBUG</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
<!-- 출력패턴 설정 -->
<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>${LOCAL_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_LOG" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 파일경로 설정 -->
<file>${LOCAL_LOG_PATH}/${ERROR_LOG_FILE_NAME}.log</file>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>ERROR</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
<!-- 출력패턴 설정 -->
<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>${LOCAL_LOG_PATH}/${ERROR_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>
</springProfile>
<springProfile name="file-logging">
<appender name="FILE_LOG" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 파일경로 설정 -->
<file>${LOG_PATH}/${LOG_FILE_NAME}.log</file>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>DEBUG</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
<!-- 출력패턴 설정 -->
<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_LOG" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 파일경로 설정 -->
<file>${LOG_PATH}/${ERROR_LOG_FILE_NAME}.log</file>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>ERROR</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
<!-- 출력패턴 설정 -->
<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}/${ERROR_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>
</springProfile>
<springProfile name="local-level">
<property name="LOG_LEVEL_root" value="INFO"/>
<property name="LOG_LEVEL_com.moa" value="DEBUG"/>
<property name="LOG_LEVEL_com.zaxxer.hikari" value="DEBUG"/>
<property name="LOG_LEVEL_org.hibernate.SQL" value="DEBUG"/>
</springProfile>
<springProfile name="dev-level">
<property name="LOG_LEVEL_root" value="DEBUG"/>
<property name="LOG_LEVEL_com.moa" value="DEBUG"/>
<property name="LOG_LEVEL_com.zaxxer.hikari" value="DEBUG"/>
<property name="LOG_LEVEL_org.hibernate.SQL" value="DEBUG"/>
</springProfile>
<logger name="root" level="${LOG_LEVEL_root}" additivity="false">
<appender-ref ref="STDOUT"/>
</logger>
<logger name="com.moa" level="${LOG_LEVEL_com.moa}" additivity="false">
<appender-ref ref="FILE_LOG"/>
<appender-ref ref="ERROR_LOG"/>
</logger>
<logger name="org.hibernate.SQL" level="${LOG_LEVEL_org.hibernate.SQL}" additivity="false">
<appender-ref ref="FILE_LOG"/>
<appender-ref ref="ERROR_LOG"/>
</logger>
<logger name="com.zaxxer.hikari" level="${LOG_LEVEL_com.zaxxer.hikari}" additivity="false">
<appender-ref ref="FILE_LOG"/>
<appender-ref ref="ERROR_LOG"/>
</logger>
<root>
</root>
</configuration>