SpringBoot 使用slf4j(logback)入门

说明

在项目中都需要使用日志组件来记录和输出日志,我们通常使用的日志方式有System.out.println或log4j。
在Springboot中提供了 SLF4J(Simple Logging Facade For Java),SLF4J是一套日志接口默认使用logback日志组件,也可以自己替换为log4j等其他日志组件
由于我们计划使用默认的日志组件,因此也就不需要在额外引入什么了

准备工作

在项目的contorller包中新建类LogController.java
这里写图片描述

日志代码

编辑类代码如下

package com.gl.springbootapi.controller;

import com.gl.springbootutils.helper.CommonMethod;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.text.SimpleDateFormat;
import java.util.Date;

@RestController
@RequestMapping("/log")
public class LogController {

    private static final Logger loggerStatic = LoggerFactory.getLogger(LogController.class);//静态方式初始化Log对象
    private  final Logger logger = LoggerFactory.getLogger(this.getClass());//对象方式初始化Log对象

    @GetMapping("")
    public String log() {
        Date d = CommonMethod.getCurDate();
        SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置日期格式

        loggerStatic.info("当前时间:"+df.format(d));
        logger.info("当前时间:"+df.format(d));
        logger.debug("当前时间:"+df.format(d));
        logger.warn("当前时间:"+df.format(d));
        logger.error("当前时间:"+df.format(d));
        return "当前时间:"+df.format(d);
    }

}

这里写图片描述

在这里我们建立了一个controller的api来触发日志记录,具体contorller的mapping不在这里说明,在其他文章里有

代码中首先建立log对象,示例代码中建立了两种log对象,一个是静态的,一个是对象的,如果在对象方法中使用,建议使用对象方式建立,这样每个类就复制黏贴就行了,使用静态方法的,需要每个类改类名,很容易遗漏

建立好log对象之后可以记录日志
日志有4个级别,INFO、DEBUG、WARN、ERROR
可以在配置文件中定义输出级别
这样记录的日志会在控制台输出
如果希望输出到文件或数据库,可以写配置文件进行配置

配置

对于日志的配置可以直接配置到application.properties中,也可以建立logback.xml对logback进行配置,如果同时有两个配置,application.properties的优先级更高

application.properties方式配置

这里写图片描述
loggin.level指定日志级别,还可以再具体指定包的级别
logging.path指定日志路径
logging.file指定日志文件(path和file只能使用一个,file优先级高,file可以指定全路径)
logging.config指定使用的xml配置文件地址

logback.xml方式配置

在resources目录下建立文件logback.xml

这里写图片描述
内容如下

<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="false">
    <!--定义日志文件的存储地址-->
    <property name="LOG_HOME" value="/logs" />
    <!-- 控制台输出 -->
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
        </encoder>
    </appender>
    <!-- 按照每天生成日志文件 -->
    <appender name="FILE"  class="ch.qos.logback.core.rolling.RollingFileAppender">
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!--日志文件输出的文件名-->
            <FileNamePattern>${LOG_HOME}/TestWeb.log.%d{yyyy-MM-dd}.log</FileNamePattern>
            <!--日志文件保留天数-->
            <MaxHistory>30</MaxHistory>
        </rollingPolicy>
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
        </encoder>
        <!--日志文件最大的大小-->
        <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
            <MaxFileSize>10MB</MaxFileSize>
        </triggeringPolicy>
    </appender>
    <!-- 日志输出级别 -->
    <root level="INFO">
        <appender-ref ref="STDOUT" />
        <appender-ref ref="FILE" />
    </root>
    <!--日志异步到数据库 -->
    <!--<appender name="DB" class="ch.qos.logback.classic.db.DBAppender">-->
    <!--&lt;!&ndash;日志异步到数据库 &ndash;&gt;-->
    <!--<connectionSource class="ch.qos.logback.core.db.DriverManagerConnectionSource">-->
    <!--&lt;!&ndash;连接池 &ndash;&gt;-->
    <!--<dataSource class="com.mchange.v2.c3p0.ComboPooledDataSource">-->
    <!--<driverClass>com.mysql.jdbc.Driver</driverClass>-->
    <!--<url>jdbc:mysql://127.0.0.1:3306/databaseName</url>-->
    <!--<user>root</user>-->
    <!--<password>root</password>-->
    <!--</dataSource>-->
    <!--</connectionSource>-->
    <!--</appender>-->
</configuration>

这样就会在磁盘根目录下建立logs文件夹,日志就存放到这里,按照规定的命名规则和大小

说明

如果想使用logback.xml方式进行配置,配置文件命名为logback.xml,Spring可以直接找到使用,如果希望定义不同环境的配置文件,例如
logback-dev.xml、logback-test.xml
则需要在application.properties添加配置
logging.config=classpath:logback-test.xml

猜你喜欢

转载自blog.csdn.net/WillJGL/article/details/77851685