스프링 부트 애플리케이션에서 로깅 시스템을 활성화하고 설정하는 방법은 여러가지가 있다.
해당 로깅 시스템 라이브러리를 클래스패스에 추가한다.
다음 두가지의 방법으로 설정할 수 있다.
Logback사용 : logback라이브러리를 클래스패스에 추가하고 logback.xml설정 파일을 클래스패스 루트에 위치시킨다.
로깅 비활성화: 시스템 프로퍼티 org.springframework.boot.logging.LoggingSystem을 none 값으로 설정합니다.
스프링 애플리케이션 로그백 logback설정시 logback-spring.xml를 사용하는 것을 권장한다.
-spring 변형 파일은 스프링이 Logback과 통합하도록 특별히 설계된 기능을 활용할 수 있도록 한다.
logback-spring.xml 파일을 사용하면 스프링 로깅 초기화 프로세스를 더 잘 제어할 수 있으며 앻플리케이션의 필요에 따라 Logback이 구성되었는지 확인할 수 있다.
정리 : 스프링 애플리케이션 logback설정시 -spring변형 파일 사용하면 나 나온 통합과 제어를 제공한다.
Spring환경 설정 시스템 속성으로 전달하여 로깅 시스템 구성에서 사용할 수 있도록 돕는다. 즉 application.properties파일에 logging.file.name을 설정하거나 환경 변수로LOGGING_FILE_NAME을 설정하면 LOG_FILE 시스템 속성이 설정 된다.
정리 : application.properties에서 logging.file.name을 설정하면 LOG_FILE 시스템 속성이 변경됨
이 설정은 로그 파일이 롤링이 되었을 때 사용할 수 있다.
롤링이란 용량 초과 혹은 시간 초과에 따른 기존 로그 파일을 압축하고 새로운 로그 파일을 생성하는 것을 의미한다.
기본값으로 ${LOG_FILE}.%d{yyyy-MM-dd}.%i.gz이다.
${LOG_FILE} : 설정되어 있는 logging.file.name 이다. 즉 로그파일의 이름이다.
%d{yyyy-MM-dd}: 롤링된 날짜를 나타낸다.
%i 롤링된 파일의 순번 : (예: application.log.2024-03-12.1.gz)
.gz 압축 포맷(gzip)
application.log.2024-03-11.1.gz (2024-03-11에 롤링된 첫 번째 파일)
application.log.2024-03-12.1.gz (2024-03-12에 롤링된 첫 번째 파일)
application.log.2024-03-12.2.gz (2024-03-12에 롤링된 두 번째 파일)
<?xml version="1.0" encoding="UTF-8"?>
<!--
Default logback configuration provided for import
-->
<included>
<conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter" />
<conversionRule conversionWord="correlationId" converterClass="org.springframework.boot.logging.logback.CorrelationIdConverter" />
<conversionRule conversionWord="wex" converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter" />
<conversionRule conversionWord="wEx" converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter" />
<property name="CONSOLE_LOG_PATTERN" value="${CONSOLE_LOG_PATTERN:-%clr(%d{${LOG_DATEFORMAT_PATTERN:-yyyy-MM-dd'T'HH:mm:ss.SSSXXX}}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr(${LOGGED_APPLICATION_NAME:-}[%15.15t]){faint} %clr(${LOG_CORRELATION_PATTERN:-}){faint}%clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>
<property name="CONSOLE_LOG_CHARSET" value="${CONSOLE_LOG_CHARSET:-${file.encoding:-UTF-8}}"/>
<property name="CONSOLE_LOG_THRESHOLD" value="${CONSOLE_LOG_THRESHOLD:-TRACE}"/>
<property name="FILE_LOG_PATTERN" value="${FILE_LOG_PATTERN:-%d{${LOG_DATEFORMAT_PATTERN:-yyyy-MM-dd'T'HH:mm:ss.SSSXXX}} ${LOG_LEVEL_PATTERN:-%5p} ${PID:- } --- ${LOGGED_APPLICATION_NAME:-}[%t] ${LOG_CORRELATION_PATTERN:-}%-40.40logger{39} : %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>
<property name="FILE_LOG_CHARSET" value="${FILE_LOG_CHARSET:-${file.encoding:-UTF-8}}"/>
<property name="FILE_LOG_THRESHOLD" value="${FILE_LOG_THRESHOLD:-TRACE}"/>
<logger name="org.apache.catalina.startup.DigesterFactory" level="ERROR"/>
<logger name="org.apache.catalina.util.LifecycleBase" level="ERROR"/>
<logger name="org.apache.coyote.http11.Http11NioProtocol" level="WARN"/>
<logger name="org.apache.sshd.common.util.SecurityUtils" level="WARN"/>
<logger name="org.apache.tomcat.util.net.NioSelectorPool" level="WARN"/>
<logger name="org.eclipse.jetty.util.component.AbstractLifeCycle" level="ERROR"/>
<logger name="org.hibernate.validator.internal.util.Version" level="WARN"/>
<logger name="org.springframework.boot.actuate.endpoint.jmx" level="WARN"/>
</included>