Spring boot 통합 log4j 2 프로 세 스 분석

이 글 은 주로 Spring boot 통합 log4j 2 과정 분석 을 소개 하 였 으 며,예시 코드 를 통 해 매우 상세 하 게 소개 하 였 으 며,여러분 의 학습 이나 업무 에 대해 어느 정도 참고 학습 가 치 를 가지 고 있 으 므 로 필요 한 분 들 은 참고 하 시기 바 랍 니 다.
이전에 log4j 2 를 통합 한 적 이 있 지만,오늘 재 통합 발견 은 모두 잊 어 버 렸 고,기록 도 하지 않 았 다.
1.pom.xml 중
(1)spring-boot-starter-web 패키지 아래 spring-boot-starter-logging 제거

<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-web</artifactId>
   <!--    slf4j-log4j12-->
   <exclusions>
     <exclusion>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-logging</artifactId>
     </exclusion>
   </exclusions>
</dependency>
설명:
자체 로그 를 먼저 제거 하지 않 으 면 다음 과 같은 오류 가 발생 할 수 있 습 니 다.
SLF4J: Class path contains multiple SLF4J bindings.
(2)spring-boot-starter-log4j 2 패키지 도입

<!--log4j2     -->
<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>
2.log4j 2 프로필 추가
src\main\resources 에 log4j 2-spring.xml 추가

<?xml version="1.0" encoding="UTF-8"?>
<!--Configuration   status,      log4j2         ,     ,    trace ,    log4j2        -->
<!--monitorInterval:Log4j                    ,      -->
<configuration monitorInterval="5">
  <!--           : OFF > FATAL > ERROR > WARN > INFO > DEBUG > TRACE > ALL -->

  <!--    -->
  <Properties>
    <!--      :%date    ,%thread     ,%-5level:      5      %msg:    ,%n    -->
    <!-- %logger{36}    Logger     36    -->
    <property name="LOG_PATTERN" value="%date{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n" />
    <!--          ,         -->
    <property name="FILE_PATH" value="log" />
    <property name="FILE_NAME" value="myLog.log" />
  </Properties>

  <appenders>

    <console name="Console" target="SYSTEM_OUT">
      <!--       -->
      <PatternLayout pattern="${LOG_PATTERN}"/>
      <!--      level         (onMatch),       (onMismatch)-->
      <ThresholdFilter level="FATAL" onMatch="ACCEPT" onMismatch="DENY"/>
    </console>

    <!--          ,  log           , append    ,       -->
    <File name="Filelog" fileName="${FILE_PATH}/test.log" append="false">
      <PatternLayout pattern="${LOG_PATTERN}"/>
    </File>

    <!--          info        ,      size,  size             -               ,    -->
    <RollingFile name="RollingFileInfo" fileName="${FILE_PATH}/info.log" filePattern="${FILE_PATH}/${FILE_NAME}-INFO-%d{yyyy-MM-dd}_%i.log.gz">
      <!--      level        (onMatch),       (onMismatch)-->
      <Filters>
        <ThresholdFilter level="warn" onMatch="DENY" onMismatch="NEUTRAL"/>
        <ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY"/>
      </Filters>
      <PatternLayout pattern="${LOG_PATTERN}"/>
      <Policies>
        <!--interval            ,   1 hour-->
        <TimeBasedTriggeringPolicy interval="1"/>
        <SizeBasedTriggeringPolicy size="10MB"/>
      </Policies>
      <!-- DefaultRolloverStrategy      ,            7       -->
      <DefaultRolloverStrategy max="15"/>
    </RollingFile>

    <!--          warn        ,      size,  size             -               ,    -->
    <RollingFile name="RollingFileWarn" fileName="${FILE_PATH}/warn.log" filePattern="${FILE_PATH}/${FILE_NAME}-WARN-%d{yyyy-MM-dd}_%i.log.gz">
      <!--      level        (onMatch),       (onMismatch)-->
      <Filters>
        <ThresholdFilter level="error" onMatch="DENY" onMismatch="NEUTRAL"/>
        <ThresholdFilter level="warn" onMatch="ACCEPT" onMismatch="DENY"/>
      </Filters>
      <PatternLayout pattern="${LOG_PATTERN}"/>
      <Policies>
        <!--interval            ,   1 hour-->
        <TimeBasedTriggeringPolicy interval="1"/>
        <SizeBasedTriggeringPolicy size="10MB"/>
      </Policies>
      <!-- DefaultRolloverStrategy      ,            7       -->
      <DefaultRolloverStrategy max="15"/>
    </RollingFile>

    <!--          error        ,      size,  size             -               ,    -->
    <RollingFile name="RollingFileError" fileName="${FILE_PATH}/error.log" filePattern="${FILE_PATH}/${FILE_NAME}-ERROR-%d{yyyy-MM-dd}_%i.log.gz">
      <!--      level        (onMatch),       (onMismatch)-->
      <ThresholdFilter level="error" onMatch="ACCEPT" onMismatch="DENY"/>
      <PatternLayout pattern="${LOG_PATTERN}"/>
      <Policies>
        <!--interval            ,   1 hour-->
        <TimeBasedTriggeringPolicy interval="1"/>
        <SizeBasedTriggeringPolicy size="10MB"/>
      </Policies>
      <!-- DefaultRolloverStrategy      ,            7       -->
      <DefaultRolloverStrategy max="15"/>
    </RollingFile>

  </appenders>

  <!--Logger             ,         class          。-->
  <!--    loggers,     logger    appender,appender    -->
  <loggers>

    <!--      -->
    <!--  additivity  false,   Logger       appender   ,      Logger  appender   。-->
    <Logger name="org.springframework" level="info" additivity="false">
      <AppenderRef ref="Console"/>
    </Logger>

    <root level="info">
      <appender-ref ref="Console"/>
      <appender-ref ref="Filelog"/>
      <appender-ref ref="RollingFileInfo"/>
      <appender-ref ref="RollingFileWarn"/>
      <appender-ref ref="RollingFileError"/>
    </root>
  </loggers>

</configuration>
자바 프로그램 코드 에서 log4j 2 로 그 를 사용 합 니 다.

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

private final Logger logger = LoggerFactory.getLogger(WebMvcConfigurer.class);
logger.error("this is error test");
log.info("this is info test");
시작 하면 로그 디 렉 터 리 가 나타 납 니 다.src 와 같은 단계 에 있 습 니 다.

이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기