首页 > 编程语言 > 详细

Springboot中slf4j+log4j2的使用

时间:2021-07-19 22:39:49      阅读:31      评论:0      收藏:0      [点我收藏+]

Springboot中slf4j+log4j2的使用

0.简介

slf4j: 日志门面

log4j2: 日志实现

我要是直接用log4j2打日志当然可以,但是我想换的时候,就需要修改很多代码.

比如说导入的日志类啊,logger的声明啊等等.

但是我可以让slf4j来做,slf4j是多个日志框架的上层,大家都基于slf4j来做.

这样,要切换具体的日志框架时,只用换个依赖那些就好了, 代码之类的不用任何修改.

这就是面向接口编程的思想,方法形参放置接口,运行时传入不同的实现类,就能产生出不同的实现效果.

技术分享图片

1.导入pom

        <!-- log4j2依赖 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-log4j2</artifactId>
        </dependency>

2.排除默认的logback

默认的是logback,需要在pom中排除掉这个默认的.

网上说的排spring-boot-starter-web,试了不行.此处排的是spring-boot-starter中的.

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
            <exclusions>
                 <!-- 20210714去掉logback配置 -->
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-logging</artifactId>
                </exclusion>
                 <!-- 20210714去掉logback配置 end -->
                <exclusion>
                    <artifactId>logback-classic</artifactId>
                    <groupId>ch.qos.logback</groupId>
                </exclusion>
            </exclusions>
        </dependency>

3.编写配置文件

放到项目的resources目录下即可.

文件名:log4j2.xml

<?xml version="1.0" encoding="utf-8" ?>
<configuration>

    <!-- 参数声明 -->
    <Properties>
        <property name="LOG_PATTERN"
                  value="%d{yyyy-MM-dd HH:mm:ss.SSS} -- %style{[%t]}{bright,magenta} %highlight{%-5level}{ERROR=Bright RED, WARN=Bright Yellow, INFO=Bright Green, DEBUG=Bright Cyan, TRACE=Bright White} %logger{36}.%M - %msg%n"/>
        <!-- ./当前路径 此处为项目根路径-->
        <!-- debug 日志文件位置及名称,在rollFile的时候老文件的生成规则 -->
        <property name="DEBUG_FILE_PATH_ING" value="./logs/debug.log"/>
        <property name="DEBUG_FILE_PATH_ED" value="./logs/debug-%d{yyyy-MM-dd}.%i.log"/>

        <!-- info 日志文件位置及名称,在rollFile的时候老文件的生成规则 -->
        <property name="INFO_FILE_PATH_ING" value="./logs/info.log"/>
        <property name="INFO_FILE_PATH_ED" value="./logs/info-%d{yyyy-MM-dd}.%i.log"/>

        <!-- error 日志文件位置及名称,在rollFile的时候老文件的生成规则 -->
        <property name="ERROR_FILE_PATH_ING" value="./logs/error.log"/>
        <property name="ERROR_FILE_PATH_ED" value="./logs/error-%d{yyyy-MM-dd}.%i.log"/>

        <!-- warn 日志文件位置及名称,在rollFile的时候老文件的生成规则 -->
        <property name="WARN_FILE_PATH_ING" value="./logs/warn_error.log"/>
        <property name="WARN_FILE_PATH_ED" value="./logs/warn_error-%d{yyyy-MM-dd}.%i.log"/>

        <!-- 日志文件最大文件大小全局配置,一天之内最大文件产生数量全局配置 -->
        <property name="MAX_FILE_SIZE" value="100MB"/>
        <property name="MAX_FILE_NUM" value="30"/>
    </Properties>

    <appenders>
        <!-- 控制台输出日志信息 -->
        <console name="Console_Log" target="SYSTEM_OUT">
            <PatternLayout pattern="${LOG_PATTERN}"/>
        </console>

        <!-- debug日志文件输出日志信息 -->
        <RollingFile name="Debug_File" fileName="${DEBUG_FILE_PATH_ING}" filePattern="${DEBUG_FILE_PATH_ED}">
            <ThresholdFilter level="DEBUG" onMatch="ACCEPT" onMismatch="DENY"/>
            <PatternLayout pattern="${LOG_PATTERN}"/>
            <Policies>
                <SizeBasedTriggeringPolicy size="${MAX_FILE_SIZE}"/>
                <TimeBasedTriggeringPolicy/>
            </Policies>
            <DefaultRolloverStrategy max="${MAX_FILE_NUM}"/>
        </RollingFile>

        <!-- info日志文件输出日志信息 -->
        <RollingFile name="Info_File" fileName="${INFO_FILE_PATH_ING}" filePattern="${INFO_FILE_PATH_ED}">
            <ThresholdFilter level="INFO" onMatch="ACCEPT" onMismatch="DENY"/>
            <PatternLayout pattern="${LOG_PATTERN}"/>
            <Policies>
                <SizeBasedTriggeringPolicy size="${MAX_FILE_SIZE}"/>
                <TimeBasedTriggeringPolicy/>
            </Policies>
            <DefaultRolloverStrategy max="${MAX_FILE_NUM}"/>
        </RollingFile>

        <!-- warn日志文件输出日志信息 -->
        <RollingFile name="Warn_File" fileName="${ERROR_FILE_PATH_ING}" filePattern="${ERROR_FILE_PATH_ED}">
            <ThresholdFilter level="WARN" onMatch="ACCEPT" onMismatch="DENY"/>
            <PatternLayout pattern="${LOG_PATTERN}"/>
            <Policies>
                <SizeBasedTriggeringPolicy size="${MAX_FILE_SIZE}"/>
                <TimeBasedTriggeringPolicy/>
            </Policies>
            <DefaultRolloverStrategy max="${MAX_FILE_NUM}"/>
        </RollingFile>

        <!-- error日志文件输出日志信息 -->
        <RollingFile name="Error_File" fileName="${ERROR_FILE_PATH_ING}" filePattern="${ERROR_FILE_PATH_ED}">
            <ThresholdFilter level="ERROR" onMatch="ACCEPT" onMismatch="DENY"/>
            <PatternLayout pattern="${LOG_PATTERN}"/>
            <Policies>
                <SizeBasedTriggeringPolicy size="${MAX_FILE_SIZE}"/>
                <TimeBasedTriggeringPolicy/>
            </Policies>
            <DefaultRolloverStrategy max="${MAX_FILE_NUM}"/>
        </RollingFile>

    </appenders>

    <!--配置总的日志监听级别-->
    <loggers>
        <root level="DEBUG">
            <appender-ref ref="Console_Log"/>
            <appender-ref ref="Debug_File"/>
            <appender-ref ref="Info_File"/>
            <appender-ref ref="Error_File"/>
        </root>
    </loggers>
</configuration>

4.使用

类上面加注解@Slf4j

// info
log.info("请求地址: "+ request.getRequestURI());
// 占位符的使用{}
log.info("<< | {} | 返回给调用方的响应的报文:\n {}", msgId, JSON.toJSONString(sxResponse));
// << | msgId | 返回给调用方的响应的报文:\n JSON.toJSONString(sxResponse)", msgId, JSON.toJSONString(sxResponse)

Springboot中slf4j+log4j2的使用

原文:https://www.cnblogs.com/yang37/p/15031880.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!