微信点餐SpringBoot-02:logback日志的配置

文章目录

      • 1. 日志的级别
      • 2. lombok工具的使用
      • 3. 日志的第一种配置方式(application.properties)
      • 4. 日志的第二种配置方式(logback-spring.xml)

这里使用的日志门面是SlF4j,日志实现Logback
微信点餐SpringBoot-02:logback日志的配置_第1张图片

1. 日志的级别

1、打印debug,info,error级别的信息:

import org.slf4j.LoggerFactory;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

@RunWith(SpringRunner.class)
@SpringBootTest
public class LoggerTest {
    //注意这里LoggerFactory包别导错了
    //打印当前类LoggerTest的信息
    private final Logger logger
            = LoggerFactory.getLogger(LoggerTest.class);

    @Test
    public void test1(){
        logger.debug("debug...");
        logger.info("info...");
        logger.error("error...");
    }
}

输出结果:

2020-03-06 17:17:14.360  INFO 13140 --- [           main] com.hh.sell.LoggerTest                   : info...
2020-03-06 17:17:14.361 ERROR 13140 --- [           main] com.hh.sell.LoggerTest                   : error...

这里没有输出debug级别的信息,因为系统默认的级别为Info,比info级别大的能够输出,比info级别小的不能输出,可以查看日志级别,ctrl+N:
微信点餐SpringBoot-02:logback日志的配置_第2张图片

2. lombok工具的使用

平时使用lombok都是为了方便,可以不用写get,set,构造方法等,由于我们写日志类每次都要写当前类,为了方便使用lombok提供的一个注解:@Slf4j

先导入lombok的依赖:

 <!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
 <dependency>
     <groupId>org.projectlombok</groupId>
     <artifactId>lombok</artifactId>
     <version>1.18.12</version>
     <scope>provided</scope>
 </dependency>
@RunWith(SpringRunner.class)
@SpringBootTest
@Slf4j
public class LoggerTest {
    @Test
    public void test1(){
        String name = "heng";
        String password = "123";
        //打印结果
        log.info("name:{},password:{}",name,password);
        log.debug("debug...");
        log.info("info...");
        log.error("error...");
    }
}

在这里插入图片描述

3. 日志的第一种配置方式(application.properties)

第一种配置方式,直接在application.properties中配置:

##########配置日志##########################

# 配置日志级别为debug
logging.level.com.hh=debug

#在控制台输出的日志格式
logging.pattern.console="%d - %msg%n"

#指定日志生成的文件路径
logging.file=F:/WeiXinDianCan_SpringBoot/sell.log

# 在文件输出的日志格式
logging.pattern.file=%d{yyyy-MM-dd} == [%thread]== %-5level == %logger{50} === %msg%n

控制台输出的日志:
在这里插入图片描述
文件中输出的日志:
微信点餐SpringBoot-02:logback日志的配置_第3张图片

4. 日志的第二种配置方式(logback-spring.xml)

各个logger 都被关联到一个 LoggerContext,LoggerContext负责制造logger,也负责以树结构排列各logger。其他所有logger也通过org.slf4j.LoggerFactory 类的静态方法getLogger取得。

root本质上就是一个logger

微信点餐SpringBoot-02:logback日志的配置_第4张图片
日志的配置要实现两个目标:

1、将info日志和error日志区分开
2、每天输出一个日志

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

    <!--配置控制台日志-->
    <!--appender指定日志的输出目的地是控制台-->
    <appender name="consoleLog" class="ch.qos.logback.core.ConsoleAppender">
        <!--配置日志的输出格式-->
        <layout class="ch.qos.logback.classic.PatternLayout">
            <!--%d表示日期时间,msg表示日志信息-->
            <pattern>
                %d - %msg%n
            </pattern>
        </layout>
    </appender>

    <!--appender指定info日志的输出目的地为文件-->
    <appender name="fileInfoLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!--使得info日志中只输出info级别的信息-->
        <!--即使配置info,也不会过滤掉Error级别的日志信息,因为高于info级别的会输出,因此使用onMatch-->
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>ERROR</level>
            <!--如果匹配,那么下面的规则就不会执行-->
            <onMatch>DENY</onMatch>
            <!--如果不匹配,执行下面的规则-->
            <onMismatch>ACCEPT</onMismatch>
        </filter>
        <!--配置日志的输出格式-->
        <encoder>
            <pattern>
                %msg%n
            </pattern>
        </encoder>
        <!--配置滚动策略:按照时间滚动,每天一个日志文件-->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!--路径,直接在日志文件名中带上时间-->
            <fileNamePattern>F:/WeiXinDianCan_SpringBoot/info.%d.log</fileNamePattern>
        </rollingPolicy>
    </appender>

    <!--appender指定error日志的输出目的地为文件-->
    <appender name="fileErrorLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!--error日志只输出error级别的日志信息-->
        <!--根据级别过滤,这个配置项只输出Error级别的日志,过滤掉info级别的日志-->
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>ERROR</level>
        </filter>
        <!--配置日志的输出格式-->
        <encoder>
            <pattern>
                %msg%n
            </pattern>
        </encoder>
        <!--配置滚动策略:按照时间滚动,每天一个日志文件-->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!--路径,直接在日志文件名中带上时间-->
            <fileNamePattern>F:/WeiXinDianCan_SpringBoot/error.%d.log</fileNamePattern>
        </rollingPolicy>
    </appender>

    <!--root标识这个appender将会添加到这个logger,使用这个配置-->
    <root level="INFO">
        <appender-ref ref="consoleLog"/>
        <appender-ref ref="fileInfoLog"/>
        <appender-ref ref="fileErrorLog"/>
    </root>

</configuration>

通过结果我们可以看到完成了我们想要的功能:
微信点餐SpringBoot-02:logback日志的配置_第5张图片
在这里插入图片描述

你可能感兴趣的:(微信点餐SpringBoot-02:logback日志的配置)