美文网首页
SpringMVC-集成slf4j-log4j2

SpringMVC-集成slf4j-log4j2

作者: 张明学 | 来源:发表于2020-05-24 20:40 被阅读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");
    

    相关文章

      网友评论

          本文标题:SpringMVC-集成slf4j-log4j2

          本文链接:https://www.haomeiwen.com/subject/cjtsahtx.html