자라선

13. Logging 본문

Develop/Spring Boot

13. Logging

자라선 2020. 7. 27. 16:21

Logging Facade (로깅 퍼사드)

Commons Logging, SLF4j

 

Logger (로거)

JUL, Log4j, Logback

 

로깅 파사드와 로거는 서로 다르며 로깅 퍼사드는 로거의 추상화된 인터페이스로 로거를 어플리케이션 개발자에게 선택권을 주기 위한 파사드 패턴 모델이다.

로거는 말그대로 최종 로깅을 출력하는 라이브러리이다.

 

Spring 프레임워크는 개발 초창기 때 부터 Commons Logging 로깅 퍼사드로 개발되었기 때문에 스프링 부트 4까지는 Commons Logging 로깅 파사드를 사용 하였으나 이슈가 많았기 때문에 스프링 5 이후 부터는 스프링 자체적으로 개발된 JCL (Jakart Commons Logging)를 사용하여 Commons Logging 사용시 SLF4j 도 넘어가고 Log4j 사용시에도 SLF4j 로 넘겨지며 그렇게 받은 SLF4j 에서는 다시 Logback 로거로 보내 최종적으로 로그를 출력하게 된다.


로그 설정

스프링 웹 서버 시작시 기본 로그 끄기

spring.main.log-startup-info=false

 

스프링 로그 레벨 변경

logging.level.root=info
program argument에 --debug, --trace
logging.level.<패키지 및 클래스 경로>=debug

 

로그를 파일로 출력

10MB 마다 로그파일리 롤링이 되며 아카이브가 된다.

logging.file=logs
logging.path=logs

 

코드에서 사용법

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.stereotype.Component;
@Component
public class SampleRunner implements ApplicationRunner {
 
    Logger logger = LoggerFactory.getLogger(SampleRunner.class);
 
    @Override
    public void run(ApplicationArguments args) throws Exception {
        logger.trace("trace");
        logger.debug("debug");
        logger.info("info");
        logger.warn("warn");
        logger.error("error");
    }
}

로그 설정 파일

·        Logback: logback-spring.xml

·        Log4J2: log4j2-spring.xml

·        JUL (비추): logging.properties

 

logback-spring.xmllogback extension를 사용하기 때문에 추천

ProfileEnvironment 프로퍼티에 따라 설정가능

<?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="me.tony.SpringBootInflearn" level="DEBUG"/>
</configuration>

로거 변경

Spring Boot5 는 기본 로거는 logback 로거이다.

이것을 log4j2 로 변경 하기 위해서는 starter-web에서 exclusion으로 제외하고 의존성을 추가해야한다.

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-logging</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-log4j2</artifactId>
        </dependency>

'Develop > Spring Boot' 카테고리의 다른 글

15. devtools  (0) 2020.07.27
14. Test  (0) 2020.07.27
12. Profile  (0) 2020.07.27
11. 외부설정  (0) 2020.07.27
10. SpringApplication 기본  (0) 2020.07.27
Comments