[SprinBoot] 로거(Logger) 커스터마이징

2022. 11. 6. 14:26JAVA/Spring

1. 커스텀 로그 설정 파일 사용

  • Logback : logback-spring.xml
  • Log4J2 : log4j2-spring.xml
  • JUL(비추) : logging.properties
  • Logback extension
    • 프로파일 <springProfile name=”프로파일”>
    • Environment 프로퍼티 <springProperty>

 

Logback 로거의 커스텀 로그 설정 파일 사용

  1. resources/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" />
    <root level="INFO">
        <appender-ref ref="CONSOLE" />
    </root>
    <logger name="kr.yh" level="DEBUG"/>
    <logger name="org.springframework.web" level="DEBUG"/>
</configuration>
  • kr.yh 패키지의 발생 로그 레벨을 DEBUG로 설정

 

특정한 프로파일일 때만 로그를 남기기

<springProfile> 태그를 사용하여 특정한 프로파일일때만 사용자가 정의한 로그 설정을 활성화시킵니다. 예를 들어 dev 프로파일에서는 로그 레벨을 DEBUG 레벨로 찍을 수 있습니다.

<springProfile name="staging">
    <!-- configuration to be enabled when the "staging" profile is active -->
</springProfile>

<springProfile name="dev | staging">
    <!-- configuration to be enabled when the "dev" or "staging" profiles are active -->
</springProfile>

<springProfile name="!production">
    <!-- configuration to be enabled when the "production" profile is not active -->
</springProfile>

 

Environment Properties

<springProperty> 태그를 사용하여 Logback의 사용을 위해 Spring Environment를 노출시킬 수 있습니다. Logback 설정을 application.properties 파일에서 설정하는 것보다 유용합니다.

<springProperty scope="context" name="fluentHost" source="myapp.fluentd.host"
        defaultValue="localhost"/>
<appender name="FLUENT" class="ch.qos.logback.more.appenders.DataFluentAppender">
    <remoteHost>${fluentHost}</remoteHost>
    ...
</appender>

 

2. 로거를 Logback에서 Log4j2로 변경하기

스프링 프레임워크는 기본적으로 Logback 로거를 사용합니다. 이를 Log4j2 로거로 변경합니다. 실습환경의 빌드 도구는 gradle 입니다.

 

1. logback과의 충돌 방지를 위해서 ‘spring-boot-starter-logging’ 모듈을 제외

configurations {
    compileOnly {
        extendsFrom annotationProcessor
    }
    all{
        // logback과의 충돌 방지
        exclude group: 'org.springframework.boot', module: 'spring-boot-starter-logging'
    }
}

 

2. Log4j2 의존성을 추가

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-log4j2'
}

 

References

source code :https://github.com/yonghwankim-dev/springboot_study/tree/main/springboot_utilization
[인프런] 스프링 부트 개념과 활용