SpringBoot整合Logback日志框架+Slf4j注解使用

1.基本介绍

SpringBoot默认日志框架是Logback,是对log4j升级出现的另一个开源日志组件,内核进行了重写,整体性能上比log4j突出不少。

2.使用说明

2.1 引入maven依赖

为什么我们要引入这些jar包?一个良好的项目需要正常启动

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter</artifactId>
</dependencOC

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-aop</artifactId>
</dependency>

解释说明

SpringBoot中初始创建项目,引入原骨架Parent

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.1.5.RELEASE</version>
    <relativePath/> <!-- lookup parent from repository -->
</parent>

在项目工程中,command+点击 spring-boot-starter-parent 会进入 spring-boot-starter-parent-2.1.5.RELEASE.pom 文件中

  <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-dependencies</artifactId>
    <version>2.1.5.RELEASE</version>
    <relativePath>../../spring-boot-dependencies</relativePath>
  </parent>

command+点击 2.1.5.RELEASE 进入到各种包的依赖,并且规定了版本号,搜索一下,可以看到他们集成的logback包

      <dependency>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-access</artifactId>
        <version>${logback.version}</version>
      </dependency>
      <dependency>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-classic</artifactId>
        <version>${logback.version}</version>
      </dependency>
      <dependency>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-core</artifactId>
        <version>${logback.version}</version>
      </dependency>
2.2 创建logback-spring.xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="false">
    <!-- 定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径 -->
    <property name="LOG_HOME" value="./logs" />


    <!-- 配置CONSOLE控制台文件输出项 -->
    <appender name="CONSOLELOG" 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>


    <!-- 配置INFO文件输出项 -->
    <appender name="DAYINFOLOG" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <!-- 过滤error日志 -->
            <level>ERROR</level>
            <onMatch>DENY</onMatch>
            <onMismatch>ACCEPT</onMismatch>
        </filter>

        <!--配置滚动策略-->
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <!-- 按照每天生成日志文件 -->
            <!-- 日志文件输出的文件名 -->
            <FileNamePattern>${LOG_HOME}/info/%d{yyyy-MM-dd}-info-%i.log</FileNamePattern>
            <!--日志文件保留天数-->
            <MaxHistory>30</MaxHistory>
            <maxFileSize>20MB</maxFileSize>
        </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>
    </appender>


    <!-- 配置ERROR文件输出项 -->
    <appender name="DAYERRORLOG" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!--
            比较日志记录请求的Level值和ThresholdFilter中配置的Level值
            当日志记录请求的Level值小于ThresholdFilter中配置的Level值,日志记录请求被判定为无效
        -->
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>ERROR</level>
        </filter>

        <!-- 配置滚动策略 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <!-- 按照每天生成日志文件 -->
            <!-- 日志文件输出的文件名 -->
            <FileNamePattern>${LOG_HOME}/error/%d{yyyy-MM-dd}-error-%i.log</FileNamePattern>
            <!-- 日志文件保留天数-->
            <MaxHistory>30</MaxHistory>
            <maxFileSize>20MB</maxFileSize>
        </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>

    </appender>


    <!-- 日志输出级别 -->
    <root level="INFO">
        <appender-ref ref="CONSOLELOG" />
        <appender-ref ref="DAYINFOLOG"/>
        <appender-ref ref="DAYERRORLOG"/>
    </root>
</configuration>

在resources目录下 application.yml/applitions.properties配置,由于我在resources目录下,创建config文件夹,将logback-spring.xml放在此文件夹下,所以路径有所变化。

# 日志配置
logging:
  config: classpath:config/logback/logback-spring.xml

Springboot本身内置的日志功能,日志的使用方式跟我们平常使用的日志一样,但是此配置不仅可以在控制台输出,还能输出到磁盘,依据定义的策略,可以按天、大小、类型区分开来。

3.编写一个HTTP接口

  • 创建package命名为com.daobili.comtroller(根据实际情况修改)
  • 创建HelloController类,内容如下:
@RestController
@RequestMapping("/hello")
// 通过注解 @Slf4j 的方式
@Slf4j
public class HelloController {


    /**
     * 两种方式使用logback
     * 1.通过创建LoggerFactory实例
     * 2.通过注解 @Slf4j 的方式
     *
     */

    /**
     * 通过创建LoggerFactory实例
     */
    //private final static Logger LOGGER = LoggerFactory.getLogger(HelloController.class);

    @RequestMapping("/say/{name}")
    public String sayHello(@PathVariable("name") String name) {
        //LOGGER.info("hello,{}",name);
        log.info("使用注解的方式日志服务:sayHello:{}" + name);
        return "hello " + name;
    }
}
3.1 通过创建LoggerFactory实例
/**
     * 通过创建LoggerFactory实例
     */
    //private final static Logger LOGGER = LoggerFactory.getLogger(HelloController.class);
3.2 通过注解 @Slf4j 的方式

1.在pom文件中添加依赖,引入lombok

<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <optional>true</optional>
</dependency>

2.类添加注解

// 通过注解 @Slf4j 的方式
@Slf4j
public class HelloController {

}
  • 启动主程序,打开浏览器或者Postman发起请求: http://localhost:8080/hello/bamaw ,可以看到页面返回 hello bamaw

4.代码示例

本文的相关例子可以查看下面仓库中的目录:
-Github:https://github.com/bamaw/springboot2.x-examples
-Gitee: https://gitee.com/bamaw/springboot2.x-examples

如果您觉得本文不错,欢迎Star支持,您的关注是我坚持的动力!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值