SpringBoot整合Log4j2基本使用

148 阅读1分钟

排除web自带的logging,并引入log4j2依赖

 <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>

配置log4j2

resources/log4j2.xml 使用了分开存储的日志,info和error

<?xml version="1.0" encoding="UTF-8"?>

<configuration status="info">
    <Properties>
        <!-- 声明日志文件存储的目录 -->
        <Property name="LOG_HOME">C:\Users\user\Desktop\活动发布\活动发布平台_手机端_api\logs</Property>
        <Property name="LOG_PATTERN"
                  value="%date{yyyy-MM-dd HH:mm:ss.SSS} %-5level [%thread][%class{36}:%line] - %msg%n"></Property>
    </Properties>
    <Appenders>
        <!--输出控制台的配置-->
        <Console name="Console" target="SYSTEM_OUT">
            <!--控制台只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch)-->
            <ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY"/>
            <!-- 输出日志的格式-->
            <PatternLayout pattern="${LOG_PATTERN}"/>
        </Console>
        <!-- INFO级别日志 -->
        <RollingFile name="infoAppender" fileName="${LOG_HOME}/info.log"
                     filePattern="${LOG_HOME}/%d{yyyy-MM}/%d{yyyy-MM-dd}_info.log">
            <ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY"/>
            <PatternLayout pattern="${LOG_PATTERN}"/>
            <Policies>
                <TimeBasedTriggeringPolicy/>
                <SizeBasedTriggeringPolicy size="100MB"/>
            </Policies>
        </RollingFile>
        <!-- ERROR级别日志 -->
        <RollingFile name="errorAppender" fileName="${LOG_HOME}/error.log"
                     filePattern="${LOG_HOME}/%d{yyyy-MM}/%d{yyyy-MM-dd}_error.log">
            <ThresholdFilter level="error" onMatch="ACCEPT" onMismatch="DENY"/>
            <PatternLayout pattern="${LOG_PATTERN}"/>
            <Policies>
                <TimeBasedTriggeringPolicy/>
                <SizeBasedTriggeringPolicy size="100MB" />
            </Policies>
        </RollingFile>
    </Appenders>
    <Loggers>
        <Root level="info">
            <AppenderRef ref="Console"/>
            <AppenderRef ref="infoAppender"/>
            <AppenderRef ref="errorAppender"/>
        </Root>
    </Loggers>

</configuration>

指定log4j2

在application.yml/properties配置文件内指定

logging:
  config: classpath:log4j2.xml

使用

创建log4j2实例 private final Logger logger = LogManager.getLogger(this.getClass()); 使用即可

eg: logger.info() logger.warn() logger.error()