logback 설정

정명진·2023년 5월 26일
0

서버 구축시 로그는 필수다..

요즘 자만해서 로그 설정을 안해놨더니 프론트에서 에러가 발생했는데

원인을 모르는...
그래서 다시 로그 설정을 해줬다.

우선 컨테이너에 설정된 로그 저장 경로와 호스트를 매핑시켜주기 위해 컴포즈 파일을 수정했다.

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>
profile
개발자로 입사했지만 정체성을 잃어가는중... 다시 준비 시작이다..

0개의 댓글