SpringBoot整合Slf4j+logback日志框架

SpringBoot整合Slf4j+logback日志框架

1、介绍

Slf4j的全称是Simple Loging Facade For Java(Java简单日志门面),它仅仅是一个为Java程序提供日志输出的统一接口,并不是一个具体的日志实现方案,就比如JDBC一样,只是一种规则而已。所以单独的Slf4j是不能工作的,必须搭配其他具体的日志实现方案,比如apache的org.apache.log4j.Logger,jdk自带的java.util.logging.Logger等。

2、优势

  • 解耦客户端

Slf4j只是一种接口,它本身并不关心你底层使用的是什么日志实现方案,所以它支持各种日志实现方案。简单的说,只要我们在类库中使用Slf4j打日志,那么底层使用什么日志实现方案是使用者决定的,怎么决定?依靠配置文件和jar库。

  • 提高效率

Slf4j打印日志使用了{}占位符,这样就不会有字符串拼接操作,减少了无用ring对象的数量,节省了内存,也提高了时间效率,同时编码更加方便。

3、log 等级

Slf4j有四个级别的log level可供选择,级别从上到下由低到高,优先级高的将被打印出来。

  • Debug
    简单来说,对程序调试有利的信息都可以debug输出
  • info
    对用户有用的信息
  • warn
    可能会导致错误的信息
  • error
    顾名思义,发生错误的地方

4、SpringBoot整合Slf4j+logback

logback和log4j以及log4j2三者,推荐使用logback,因为logback的效率显著高于log4j,而且logback也是Springboot推荐并且默认使用的日志系统。

​ springboot中包含了对应的jar包,所以不需要额外导包了

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VnMrvQuA-1615453911646)(image-20210311170809628.png)]

创建配置文件

在resource根目录下面创建配置文件 logback.xml

<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="true" scan="true" scanPeriod="60 seconds">
    <!--
    	appender简介:
    		具体描述如何来写日志的节点。最常用的有三类:ConsoleAppender、FileAppender、RollingFileAppender
    	appender属性详解:
    		name属性:自定义名称。
    		class属性:指定类名。
    	appender子节点详解:
    		encoder子节点:将日志信息输出的节点,其内部的pattern子节点指定输出格式。
    -->
    <!--
    	ConsoleAppender简介:无特殊特性
    -->
    <appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <charset>UTF-8</charset>
            <pattern>[%d{MM-dd HH:mm:ss}][%p][%logger{0}:%line] - %m%n</pattern>
        </encoder>
    </appender>
    <!--
    	FileAppender简介:
    		把日志添加到文件。
    	FileAppender特殊子节点详解:
    		file子节点:日志文件名,相对路径绝对路径均可,如果上级目录不存在会自动创建,没有默认值。
    		append子节点:如果是 true,日志被追加到文件结尾,如果是 false,清空现存文件,默认是true。
    -->
    <appender name="logFile" class="ch.qos.logback.core.FileAppender">
        <file>logFile.log</file>
        <append>true</append>
        <encoder>
            <pattern>%-4relative [%thread] %-5level %logger{35} - %msg%n</pattern>
        </encoder>
    </appender>
    <!--
    	RollingFileAppender简介:
    		先将日志记录到指定文件,当符合某个条件时,将日志数据迁移到其他文件。
    	RollingFileAppender特殊子节点详解:
    		triggeringPolicy子节点:定义日志滚动的触发条件。一般为时间触发或文件大小触发。
    		rollingPolicy子节点:当触发条件满足时,决定如何滚动。涉及文件移动和重命名。
    -->
    <appender name="rollingFileBaseTime" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>rollingFileBaseTime.log</file>
        <append>true</append>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>logFile.%d{yyyy-MM-dd}.log</fileNamePattern>
            <maxHistory>30</maxHistory>
        </rollingPolicy>
        <encoder>
            <pattern>%-4relative [%thread] %-5level %logger{35} - %msg%n</pattern>
        </encoder>
    </appender>
    <appender name="rollingFileBaseSize" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>rollingFileBaseSize.log</file>
        <append>true</append>
        <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
            <fileNamePattern>logFile.%i.log</fileNamePattern>
            <minIndex>1</minIndex>
            <maxIndex>3</maxIndex>
        </rollingPolicy>
        <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
            <maxFileSize>5MB</maxFileSize>
        </triggeringPolicy>
        <encoder>
            <pattern>%-4relative [%thread] %-5level %logger{35} - %msg%n</pattern>
        </encoder>
    </appender>
    <!--
    	logger简介:
    		用来设置某个包或类的打印级别和appender。
    	logger属性详解:
    		name属性:用来指定受此logger约束的某一个包或者具体的某一个类。
    		level属性:设置打印级别,默认继承上级的级别。
    		addtivity属性:是否向上级loger传递打印信息,默认是true。
    	logger子节点详解:
    		appender-ref子节点:可以包含多个,用于引用appender节点
    -->
    <logger level="info" name="com.xxx.xxx">
        <appender-ref ref="stdout" />
    </logger>
    <!--
    	root简介:
    		也是一个logger节点,但它是根logger节点,只有一个level属性
    	root属性详解:
    		level属性:设置打印级别,默认继承上级的级别。
    	root子节点详解:
    		appender-ref子节点:可以包含多个,用于引用appender节点
    -->
    <root level="info">
        <appender-ref ref="stdout" />
    </root>
</configuration>

在springboot配置文件application.yml中引入上面的配置文件

# 日志文件路径配置
logging:
  config: classpath:logback.xml

使用

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-214cfNjD-1615453911648)(image-20210311171036506.png)]

private Logger logger = LoggerFactory.getLogger(this.getClass());

    /***
     * 用户登录
     * @param user
     * @return
     */
    @PostMapping("/login")
    public AjaxResult login(@RequestBody User user){
        logger.error("用户{}登录,密码:{}",user.getUsername(),user.getPassword());
        return new AjaxResult().ok(200,"成功了!" + user.getPassword());
    }

ser){
logger.error(“用户{}登录,密码:{}”,user.getUsername(),user.getPassword());
return new AjaxResult().ok(200,“成功了!” + user.getPassword());
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值