SpringMVC-集成slf4j-log4j2

2020-05-24  本文已影响0人  张明学

本篇文章主要介绍SpringMVC如何集成slf4j以及log4j2
slf4j与log4j2的介绍

Jar依赖

        <!-- slf4j核心包-->
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>1.7.30</version>
        </dependency>

        <!--slf4j对应log4j2的中间件,即桥接 -->
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-slf4j-impl</artifactId>
            <version>2.13.1</version>
        </dependency>

        <!-- log4j2 -->
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-core</artifactId>
            <version>2.13.1</version>
        </dependency>
        
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-web</artifactId>
            <version>2.13.1</version>
            <scope>runtime</scope>
        </dependency>
        
        <!--log4j2 异步依赖-->
        <dependency>
            <groupId>com.lmax</groupId>
            <artifactId>disruptor</artifactId>
            <version>3.3.6</version>
        </dependency>

log4j-web是为了避免log的资源没有释放,它是利用的Servlet的生命周期来进行log4j的配置和资源的释放。用pom分析工具可以分析出来他们之间的依赖关系

配置log4j2的配置文件位置

在web.xml中配置参数:

    <!-- lo4j2的配置文件 -->
    <context-param>
        <param-name>log4jConfiguration</param-name>
        <!-- 默认文件名log4j2.xml -->
        <param-value>classpath:log4j2.xml</param-value>
    </context-param>

如果在classpath定义的log4j2的配置文件就是log4j2.xml,也可以不用在web.xml中配置log4jConfiguration参数。

配置log4j.xml

<?xml version="1.0" encoding="UTF-8"?>
<configuration status="INFO" monitorInterval="30">

    <properties>
        <!-- 配置日志文件输出目录 -->
        <Property name="log_dir">/data/logs/app</Property>
    </properties>

    <Appenders>

        <Console name="CONSOLE" target="SYSTEM_OUT" follow="true">
            <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss:SSS}|%-5level|%thread|%c-%L| - %msg%n"/>
        </Console>

        <RollingFile name="ROLLING_FILE" fileName="${log_dir}/catalina.out"
                     filePattern="${log_dir}/catalina.%d{yyyy-MM-dd}.log.gz"
                     immediateFlush="false">
            <Filters>
                <ThresholdFilter level="INFO" onMatch="ACCEPT"/>
            </Filters>
            <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss:SSS}|%-5level|%thread|%X{invokeNo}|%c-%L| - %msg%n"/>

            <Policies>
                <TimeBasedTriggeringPolicy modulate="true" interval="1"/>
            </Policies>

        </RollingFile>
    </Appenders>
    <Loggers>

        <!--设置spring和mybatist等第三方jar中的日志输出级别->
        <logger name="org.springframework" level="INFO"></logger>
        <logger name="org.mybatis" level="INFO"></logger>

        <AsyncRoot level="DEBUG" includeLocation="true">
            <AppenderRef ref="CONSOLE"/>
            <AppenderRef ref="ROLLING_FILE" />
        </AsyncRoot>

    </Loggers>

</configuration>

log4j2的配置文件说明

使用

private Logger logger = LoggerFactory.getLogger(this.getClass());
logger.debug("debug");
上一篇 下一篇

猜你喜欢

热点阅读