SpringBoot项目日志的使用

一.什么是日志框架

1.概念

  • 一套能实现日志输出的工具包
  • 能够表述系统运行状态的所有时间都可以算作日志

比如:System.out.println()语句就是一种最低级的日志

二.日志框架的选择

1.什么是日志门面和日志实现?

  • 日志门面:是日志实现的抽象层。
  • 日志实现:具体的日志功能的实现。

为什么不直接使用日志实现,而是又弄了一个叫日志门面的东西?

因为日志实现,可能会有一些代码的优化和改动,避免影响用户在项目中的使用,使用日志门面这些统一的接口,假设在实现层代码做了更改,用户在项目中使用日志而调用的接口等等都是不会受影响的。
 

2.常见的日志框架

日志门面(抽象层)日志实现

JCL

SLF4j

Jboss-logging

JUL

log4j

log4j2

logback

在实际使用中,是选择一个抽象层的日志门面搭配一个底层日志实现来使用的。

SpringBoot中默认选择的搭配是:slf4j+logback

下面分别了解一下以上提到的各种门面和实现。

JCL:最后一次版本更新停在了2014年,后来没有继续维护更新,一般不考虑选用。

slf4j:这里提一下日志实现里面的log4j和logback,这两个实现和门面slf4j都是同一个人写的,他先写了log4j后,觉得性能可以再做优化,又写了logback,为了有更加适配的门面,自己又为log4j和logback量身打造了门面slf4j。所以这三者里面最优的搭配当然是slf4j+logback。

JUL:是java.util.logging包下提供的日志实现。

log4j2:在log4j问世之后,apache公司发现了日志市场,自家也开发了一款叫log4j2的产品。

3.日志的基本使用

 

导入依赖

<!--日志门面-->
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
    <version>1.7.30</version>
</dependency>
<!--日志实现-->
<dependency>
    <groupId>ch.qos.logback</groupId>
    <artifactId>logback-classic</artifactId>
    <version>1.2.3</version>
</dependency>
import lombok.extern.slf4j.Slf4j;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

/**
 * @author panzhi
 */
@RunWith(SpringRunner.class)
@SpringBootTest
@Slf4j
public class LoggerTest {

    // private final Logger logger = LoggerFactory.getLogger(LoggerTest.class);

    @Test
    public void test1() {
        // logger.debug("debug...");
        // logger.info("info...");
        // logger.error("error...");
        String name="root";
        String password="123456";
        log.debug("debug...");
        log.info("info...");
        log.info("name:"+name+",password:"+password);
        log.info("name:{},password:{}",name,password);
        log.error("error...");
    }
}

三.Logback的使用和配置

1.两种方式

  • application.yml配置
# 日志格式
logging:
  pattern:
    console: "%d - %msg%n"
    level: DEBUG
  file:
    path: 路径名
  • logback-spring.xml方式
    • 控制台日志
    • 输出日志文件
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <!--控制台日志-->
    <appender name="consoleLog" class="ch.qos.logback.core.ConsoleAppender">
        <layout class="ch.qos.logback.classic.PatternLayout">
            <pattern>
                %d - %msg%n
            </pattern>
        </layout>
    </appender>
    
    <!--info日志-->
    <appender name="fileInfoLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <encoder>
            <pattern>
                %d - %msg%n
            </pattern>
        </encoder>
        <!--滚动策略-->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!--路径-->
            <fileNamePattern>/路径/log/info.%d.log</fileNamePattern>
        </rollingPolicy>
    </appender>
    
    <!--error日志-->
    <appender name="fileErrorLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>ERROR</level>
        </filter>
        <encoder>
            <pattern>
                %d - %msg%n
            </pattern>
        </encoder>
        <!--滚动策略-->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!--路径-->
            <fileNamePattern>/路径/log/error.%d.log</fileNamePattern>
        </rollingPolicy>
    </appender>
    <root level="info">
        <appender-ref ref="consoleLog"/>
        <appender-ref ref="fileInfoLog"/>
        <appender-ref ref="fileErrorLog"/>
    </root>
</configuration>

2.logback小知识

  • logback 读取的配置文件类型   
    • logback会依次读取以下类型配置文件
      • logback.groovy
      • logback-test.xml
      • logback.xml
      • 如果均不存在会采用默认配置
  • logback组件
    • Logger 日志的记录器,把它关联到应用的对应的context上后,主要用于存放日志对象,也可以定义日志类型、级别。
    • Appender 用于指定日志输出的目的地,目的地可以是控制台、文件、数据库等等。
    • Layout 负责把事件转换成字符串,格式化的日志信息的输出。在logback中Layout对象被封装在encoder中。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值