logback.xml 파일을 사용해서 로깅 설정을 해볼게요.
스프링부트에서는 application.yml으로 로깅 설정이 가능하지만 할 수 있는 기능이 많지는 않아요.
그래서 실제 어느 정도 규모 있는 서비스를 운영하기 위해선 xml 파일로 설정해두는 것이 좋아요.
src/main/resources 경로 밑에 logback-spring.xml 파일을 만들어주세요.
그러면 자동으로 애플리케이션을 실행할 때 파일을 읽어 설정값을 적용합니다.
logback-spring.xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<springProperty name="filePath" source="logging.file.path"/>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<appender name="APP_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${filePath}/app.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${filePath}/app.%d{yyyy-MM-dd}.%i.gz</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>1GB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
<maxHistory>10</maxHistory>
</rollingPolicy>
<encoder>
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${filePath}/error.log</file>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>ERROR</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${filePath}/error-%d{yyyy-MM-dd}.%i.gz</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>100MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
<maxHistory>30</maxHistory>
</rollingPolicy>
<encoder>
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<root level="INFO">
<appender-ref ref="STDOUT"/>
<appender-ref ref="APP_FILE"/>
<appender-ref ref="ERROR_FILE"/>
</root>
</configuration>
application.yml
logging:
file:
path: /Users/hong/Logs/kotlin-spring
springProperty 태그로 application.yml에 있는 값을 가져올 수 있어요.
태그명과 값을 보면 어떤 설정인지 대강 알 수 있어요.
app.%d{yyyy-MM-dd}.%i.gz : 하루가 지나면 압축하여 파일을 저장하구요.
maxFileSize : 파일 용량이 넘어가면 하루가 지나지 않아도 파일이 생성되여 아래 캡처와 같이여
maxHistory: 최대 파일을 몇 일 보관할지를 나타내요.
root level을 INFO로 정했고, 에러 로그는 별도 파일에도 출력되도록 하였어요.
코드 그대로 붙이고 application.yml의 로그 경로 설정만 바꿔주시면 동작합니다.
'Backend > Spring' 카테고리의 다른 글
Spring Webflux Annotated Controller @ClientIp (0) | 2021.07.31 |
---|---|
Spring Boot Reactive Mongo Data QueryDSL (2) | 2021.07.31 |
Spring Boot Logging 간단 설정 (application.yml) (0) | 2020.08.27 |
JPA enum으로 컬럼 관리 (0) | 2020.04.02 |
Spring Boot 백그라운드 jar 중지 (kill pid) (0) | 2020.04.01 |