Log4j 세팅

springboot에는 기본적으로 slf4j와 logback이 포함되어 있다.
slf4j는 로그라이브러리들(logback, log4j2, java.util.logging 등) 을 통합해서 사용할 수 있게 해준다.
slf4j로 로그를 남기게 되면 로그라이브러리를 변경해도 소스 수정이 따로 필요가 없이 적용이 된다.

기본 로그라이브러리가 logback 이지만 Log4j2로 적용하려고 한다.

메이븐 설정

<!-- using spring mvc (exclude logback) -->
<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>

<!-- log4j2 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>

logback 이 기본으로 설정되어 있으므로 기본 log 의존성을 제외한다.
spring boot 에서 제공하는 log4j2 의존성을 추가한다.

Log4j2 설정

log4j2 의 설정은 application.yml 과 같은 위치인 resources 에 log4j2.xml 파일로 설정한다.

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
  <Appenders>
    <Console name="Console" target="SYSTEM_OUT">
      <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
    </Console>
  </Appenders>
  <Loggers>
    <Root level="info">
      <AppenderRef ref="Console"/>
    </Root>
  </Loggers>
</Configuration>

단순히 info 레벨로 system.out으로 로그를 남기는 설정이다.
설정파일을 통해 다양하게 로그를 남길 수 있다.

Sample Code

@Slf4j
public class testClass {
    public void logtest(){
        log.debug("Debug log message");
        log.info("Info log message");
        log.error("Error log message");log.info();
    }
}

lombok 에는 Slf4j를 지원하는 @Slf4j 어노테이션이 있다.
로그를 남기고자 하는 위치에 log 객체를 사용하여 로그 작성
남기고자 하는 로그 레벨로 로그 작성

Log4j2

자세한 사항은 다음 참조 Log4j2 manual


Page last modified: Mar 29 2023 at 12:00 PM.