민팽로그

log 설정 본문

프로젝트/감성 스팟 가이드(2022 한이음)

log 설정

민팽 2022. 7. 31. 19:34

배포 환경에서 발생하는 쿼리나 오류 로그를 알 수 없어 파일에 저장하는 김에, 개발 환경과 배포 환경의 로그 환경을 분리하여 설정하게 됨.

 

https://velog.io/@shawnhansh/SpringBoot-logback-%EB%8D%94-%EC%89%BD%EA%B2%8C-%EC%84%A4%EC%A0%95%ED%95%98%EA%B8%B0application.properties%EC%99%80-logback-spring.xml

https://livenow14.tistory.com/64

https://oingdaddy.tistory.com/256

 

요로캐 참고했음.

 

spring boot는 application-properties에 적힌 로그 설정 먼저 확인 후 resources 폴더에 있는 logback-spring.xml을 적용.

 

1) logback-spring.xml

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <include resource="org/springframework/boot/logging/logback/defaults.xml"/>
    <include resource="org/springframework/boot/logging/logback/console-appender.xml" />
    <include resource="logback-file.xml"/>

    <root level="info">
        <springProfile name="local">
            <appender-ref ref="CONSOLE"/>
            <appender-ref ref="FILE"/>
        </springProfile>
        <springProfile name="service">
            <appender-ref ref="FILE"/>
        </springProfile>
        <springProfile name="real">
            <appender-ref ref="CONSOLE"/>
        </springProfile>
    </root>
</configuration>

이런 식으로 작성했음.

콘솔 로그는 기본 설정을 그대로 적용했고 파일 로그만 커스텀하여 사용. -> logback-file.xml

루트 레벨은 info로, 로컬 DB를 사용하는 프로필은 콘솔과 파일 로그 출력, 배포된 서비스가 사용하는 프로필은 파일에만 출력, 테스트 용으로 실제 DB를 사용하는 프로필은 콘솔에만 출력하도록 설정.

 

2)logback-file.xml

<?xml version="1.0" encoding="UTF-8"?>
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <encoder>
        <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level ${PID:-} --- [%15thread] %logger.%M: %msg %n</pattern>
        <charset>UTF-8</charset>
    </encoder>
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
        <fileNamePattern>${LOG_PATH}/%d{yyyy-MM-dd}_%i.log</fileNamePattern>
        <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
            <maxFileSize>100MB</maxFileSize>
        </timeBasedFileNamingAndTriggeringPolicy>
    </rollingPolicy>
</appender>

콘솔과 출력 패턴을 맞춤.

LOG_PATH 폴더 아래에 연-월-일_번호.log 파일을 생성하여 최대 100MB를 넘지 않도록 설정.

 

3) application.properties

logging.level.org.hibernate.SQL= DEBUG
logging.level.org.hibernate.type.descriptor.sql.BasicBinder=TRACE

위 두 줄을 추가하여 전체 프로필이 사용할 로그를 설정.

 

4) application-local.properties

logging.file.path=./log
logging.logback.rollingpolicy.max-history=2

위와 같이 프로필마다 LOG_PATH의 값과 max-history 값을 지정해줌. 

 

이런 식으로 파일에 로그 관리 가능!

서비스 환경에서도 파일에 로그가 기록되도록 설정 완료.

Comments