반응형

기본적으로 Spring Boot 애플리케이션에서 'Starter'를 사용하는 경우 Logback 프레임 워크가 로깅에 사용됩니다. 

이 글에서는 Spring 부팅 애플리케이션에서 log4j 2 프레임 워크를 설정하는 방법을 배우게 될 것이다.

이 예제에 사용 된 도구 및 기술은 다음과 같습니다.

  • Spring Boot 1.5.8.RELEASE
  • Log4j 2.7
  • Maven 3.5.2
  • Eclipse Neon.3 (4.6.3)

예를 보자 ...

프로젝트 구조

다음과 같은 프로젝트 구조를 검토하십시오.

spring-boot-log4j.png

관련 -  이클립스 IDE에서 메이븐 프로젝트를 만드는 방법 .

Jar dependencies

우리가 알고있는 것처럼 기본적으로 의존 관계 관리를 위해 Starter 를 사용하는 경우 Logback이 로깅에 사용됩니다 스프링 부트 응용 프로그램에서 log4j 2를 사용하려면 Logback을 제외시킨 다음 log4j 2 Starter 를 다음과 같이 포함시켜야 합니다.

pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.boraji.tutorial.springboot</groupId>
  <artifactId>spring-boot-log4j2-example</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <properties>
    <java.version>1.8</java.version>
  </properties>
  <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.5.8.RELEASE</version>
  </parent>
  <dependencies>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter</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>
  </dependencies>
  <build>
    <plugins>
      <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
      </plugin>
    </plugins>
  </build>
</project>

Log4j 2 구성

 src/main/resources폴더안에 log4j2.xml생성 후 파일을 그 안에 넣고, 다음과 같은 코드를 작성합니다.

log4j2.xml

<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
  <Appenders>
    <!-- Console Appender -->
    <Console name="Console" target="SYSTEM_OUT">
      <PatternLayout pattern="%d{yyyy-MMM-dd HH:mm:ss a} [%t] %-5level %logger{36} - %msg%n" />
    </Console>
    <!-- File Appender -->
    <File name="File" fileName="d:/app.log">
      <PatternLayout pattern="%d{yyyy-MMM-dd HH:mm:ss a} [%t] %-5level %logger{36} - %msg%n" />
    </File>
    
  </Appenders>

  <Loggers>
    <!-- Log everything in custom package -->
    <Logger name="com.boraji.tutorial.springboot" level="debug" additivity="false">
      <AppenderRef ref="Console" />
      <AppenderRef ref="File" />
    </Logger>

    <!-- Log everything in Spring Boot -->
    <Logger name="org.springframework.boot" level="debug" additivity="false">
      <AppenderRef ref="Console" />
      <AppenderRef ref="File" />
    </Logger>

    <!-- Log everything in Spring Core -->
    <Logger name="org.springframework.core" level="debug" additivity="false">
      <AppenderRef ref="Console" />
      <AppenderRef ref="File" />
    </Logger>

    <Root level="error">
      <AppenderRef ref="Console" />
      <AppenderRef ref="File" />
    </Root>
    
  </Loggers>
</Configuration>

 

Run application

주석으로 @SpringBootApplication 주석이 달린 메인 클래스를 작성  하여 log4j 2 구성을 다음과 같이 테스트하십시오.

MainApp.java

package com.boraji.tutorial.springboot;

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class MainApp {
  
  private static Logger logger = LogManager.getLogger(MainApp.class);

  public static void main(String[] args) {
    logger.info("Starting Spring Boot application..");
    SpringApplication app = new SpringApplication(MainApp.class);
    app.run(args);
  }
}

를 실행하면 MainApp.java콘솔 출력은 다음과 같이 보입니다.

spring-boot-log4j_01.png

소스 다운로드


반응형

+ Recent posts