Spring Boot 支持 Java Util Logging,Log4J,Log4J2 和 Logback 等日志框架,默认采用 Logback 日志。

在实际 Spring Boot 项目中使用 Spring Boot 默认日志配置是不能够满足实际生产及开发需求的,需要选定适合的日志输出框架,灵活调整日志输出级别、日志输出格式等。

此处主要讲述如何进行 Spring Boot 项目的 Logback 默认日志详细配置。

强烈建议使用默认的 Logback 日志配置,因为它比 log4j 性能好很多!

  1. Spring Boot 自动整合了 logback 和 log4j2,所以无需引入相关依赖。

  2. 在 resources 目录下,新建日志配置文件 logback-spring.xml

    首先,官方推荐使用的 xml 名字的格式为:logback-spring.xml 而不是 logback.xml,至于为什么,因为带 spring 后缀的可以使用 <springProfile> 这个标签(PS:这个标签用于切换“开发环境”和“生产环境”)。

    下面配置可看情况自行修改!

    本文配置参考:传送门

    <?xml version="1.0" encoding="UTF-8" ?>
    <!--
    scan:当此属性设置为true时,配置文件如果发生改变,将会被重新加载,默认值为true
    scanPeriod:设置监测配置文件是否有修改的时间间隔,如果没有给出时间单位默认单位是毫秒,当scan为true时此属性生效,默认时间间隔为1分钟
    debug:当此属性设置为true时,将打印出logback内部日志信息,实时查看logback运行状态,默认值为false
    -->
    <configuration scan="true" scanPeriod="2 seconds">
    <!--
    定义滚动记录文件appender 作用:滚动记录文件,先将日志记录到指定文件,当符合某个条件时,将日志记录到其他文件
    RollingFileAppender class="ch.qos.logback.core.rolling.RollingFileAppender"
    参数:
    <append>:如果是true日志被追加到文件结尾,如果是false清空现存文件,默认是true
    <file>:被写入的文件名,可以是相对目录也可以是绝对目录,如果上级目录不存在会自动创建,没有默认值
    <rollingPolicy>:当发生滚动时,决定RollingFileAppender的行为,涉及文件移动和重命名
    <triggeringPolicy>:告知RollingFileAppender合适激活滚动
    <prudent>:当为true时不支持FixedWindowRollingPolicy支持TimeBasedRollingPolicy,但是有两个限制:1不支持也不允许文件压缩,2不能设置file属性必须留空
    -->
    <appender name="fileAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <!-- 如果是true,日志被追加到文件结尾,如果是false,清空现存文件.默认是true -->
    <prudent>true</prudent>
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
    <!-- 每天滚动一次的日志 只保留30天内的日志文件 -->
    <fileNamePattern>logs/%d{yyyy-MM-dd}/springboot_%i.log</fileNamePattern>
    <maxHistory>30</maxHistory>
    <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
    <maxFileSize>10MB</maxFileSize>
    </timeBasedFileNamingAndTriggeringPolicy>
    </rollingPolicy>
    <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
    <!-- 对日志进行格式化 -->
    <pattern>%date %level [%thread] %logger{10}.%class{0}#%method[%file:%line] %n%msg%n</pattern>
    <charset>utf-8</charset>
    </encoder>
    </appender> <appender name="errorAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <prudent>true</prudent>
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
    <fileNamePattern>logs/%d{yyyy-MM-dd}/springboot-error_%i.log</fileNamePattern>
    <maxHistory>30</maxHistory>
    <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
    <maxFileSize>10MB</maxFileSize>
    </timeBasedFileNamingAndTriggeringPolicy>
    </rollingPolicy>
    <encoder>
    <pattern>%date %level [%thread] %logger{10}.%class{0}#%method[%file:%line] %n%msg%n</pattern>
    <charset>utf-8</charset>
    </encoder>
    <!--
    配置日志级别过滤器 作用:根据日志级别进行过滤,如果日志级别等于配置级别过滤器会根据onMath和onMismatch接收或拒绝日志
    参数:
    <level>:设置过滤级别
    <onMatch>:用于配置符合过滤条件的操作
    <onMismatch>:用于配置不符合过滤条件的操作
    此处配置为只接收ERROR日志级别信息
    -->
    <filter class="ch.qos.logback.classic.filter.LevelFilter">
    <level>ERROR</level>
    <onMatch>ACCEPT</onMatch>
    <onMismatch>DENY</onMismatch>
    </filter>
    </appender> <!-- 定义控制台appender 作用:把日志输出到控制台 class="ch.qos.logback.core.ConsoleAppender" -->
    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
    <layout class="ch.qos.logback.classic.PatternLayout">
    <pattern>%date %level [%thread] %logger{10}.%class{0}#%method[%file:%line] %n%msg%n</pattern>
    </layout>
    </appender> <!-- 将root的打印级别设置为"error",指定了名字为"console","fileAppender","errorAppender"的appender -->
    <root level="error">
    <appender-ref ref="console"/>
    <appender-ref ref="fileAppender"/>
    <appender-ref ref="errorAppender"/>
    </root> <!--
    logger用来设置某一个包的日志打印级别
    <loger> 仅有一个name属性,一个可选的level和一个可选的addtivity属性
    name:用来指定受此loger约束的某一个包或者具体的某一个类
    level:用来设置打印级别,大小写无关:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF
    addtivity:是否向上级loger传递打印信息。默认是true,会将信息输入到root配置指定的地方,可以包含多个appender-ref,标识这个appender会添加到这个logger
    -->
    <logger name="com.xcbeyond.springboot" level="debug"/>
    </configuration>
  3. 两种方式使用日志:

    1. 直接在需要使用日志打印的类上添加 lombok 的注解 @Slf4j 即可!

      PS:注意需要添加 Lombok 依赖!

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

      示例:

      @SpringBootTest
      @Slf4j
      class RedisMysqlDemoApplicationTests { @Test
      void contextLoads() { // 日志级别从低到高分为 TRACE < DEBUG < INFO < WARN < ERROR < FATAL
      log.trace("================ trace =================");
      log.debug("================ debug =================");
      log.info("================ info =================");
      log.warn("================ warn =================");
      log.error("================ error =================");
      }
      }
    2. 声明日志类

      PS:注意 LoggerLoggerFactory 导的哪个包!

      import org.junit.jupiter.api.Test;
      import org.slf4j.Logger;
      import org.slf4j.LoggerFactory;
      import org.springframework.boot.test.context.SpringBootTest; @SpringBootTest
      class RedisMysqlDemoApplicationTests { private static final Logger log = LoggerFactory.getLogger(RedisMysqlDemoApplicationTests.class); @Test
      void contextLoads() { // 日志级别从低到高分为 TRACE < DEBUG < INFO < WARN < ERROR < FATAL
      log.trace("================ trace =================");
      log.debug("================ debug =================");
      log.info("================ info =================");
      log.warn("================ warn =================");
      log.error("================ error =================");
      }
      }

Spring Boot 整合 Logback 日志的更多相关文章

  1. spring boot整合slf4j-log日志

    原文地址:https://blog.csdn.net/u011271894/article/details/75735915 版权声明:本文为博主原创文章,未经博主允许不得转载. https://bl ...

  2. 剑指架构师系列-spring boot的logback日志记录

    Spring Boot集成了Logback日志系统. Logback的核心对象主要有3个:Logger.Appender.Layout 1.Logback Logger:日志的记录器 主要用于存放日志 ...

  3. Spring Boot之logback日志最佳实践

    一.Spring Boot日志介绍 Spring Boot对所有内部日志记录使用了Commons Logging,但是底层日志实现是开放的.为Java Util日志记录.Log4J2和Logback提 ...

  4. 基于Spring Boot的Logback日志轮转配置

    在生产环境下,日志是最好的问题调试和跟踪方法,因此日志的地位是十分重要的.我们平时经常使用的log4j,slf4j,logback等等,他们的配置上大同小异.这里就结合Spring Boot配置一下L ...

  5. spring boot 使用logback日志系统的详细说明

    springboot按照profile进行打印日志 log4j logback slf4j区别? 首先谈到日志,我们可能听过log4j logback slf4j这三个名词,那么它们之间的关系是怎么样 ...

  6. 【spring boot logback】spring boot中logback日志乱码问题

    在初次使用logback的自定义配置文件完整的控制spring boot日志后,发现了一个无法忍受的问题,就是日志乱码. 控制台看到打印日志乱码如下: 而日志文件打开: 记事本打开 sublime打开 ...

  7. Spring MVC整合logback日志框架实战

    1.引入依赖,本项目maven构建,普通项目导入想要的jar包即可 版本 <properties> <slf4j-api.version>1.7.7</slf4j-api ...

  8. Spring Boot 集成 logback日志

    application.properties 配置logback.xml 路径注:如果logback.xml在默认的 src/main/resources 目录下则不需要配置application.p ...

  9. spring boot 配置logback日志之jdbcTemplate打印sql语句配置

    配置jdbcTemplate打印sql 用mybaties打印语句很好配置,后来用了JdbcTemplate就不知道怎么打印了,其实JdbcTemplate执行sql语句的过程会做打印sql语句的操作 ...

  10. spring boot(13)-logback和access日志

    logback logback出自log4j的作者,性能和功能相比log4j作出了一些改进,而配置方法和log4j类似,是spring boot的默认日志组件.在application.propert ...

随机推荐

  1. 5V升压8.4V,5V转8.4芯片电路图

    PW5300是电流模式升压DC-DC转换器.其内置0.2Ω功率MOSFET的PWM电路使该稳压器具有效高的功率效率.内部补偿网络还可以程度地减少了6个外部元件的数量.误差放大器的同相输入接到0.6V精 ...

  2. http 缓存 笔记

    http 缓存,有时候静态资源没更新的情况下,不需要每次都去服务器获取,减少资源的请求. Http 报文中与缓存相关的首部字段 1. 通用首部字段(就是请求报文和响应报文都能用上的字段) 2. 请求首 ...

  3. Python异步爬虫(aiohttp版)

    异步协程不太了解的话可以去看我上篇博客:https://www.cnblogs.com/Red-Sun/p/16934843.html PS:本博客是个人笔记分享,不需要扫码加群或必须关注什么的(如果 ...

  4. 异构混排在vivo互联网的技术实践

    作者:vivo 互联网算法团队- Shen Jiyi 本文根据沈技毅老师在"2022 vivo开发者大会"现场演讲内容整理而成. 混排层负责将多个异构队列的结果如广告.游戏.自然量 ...

  5. redis集合 实现 队列

    先说一下需求:用队列解决 流量削峰,主要应用场景:商城秒杀功能. 以下是业务流程图可以参考一下: 然后本地实现思路 截图下单页面 每次购买数量会减少1,设置了1000个库存,用户id 是随机生成的. ...

  6. jmeter 之 JSON 断言

    1.JSON 断言所在位置:断言->JSON 断言 2.JSON断言中的字段解析 Assert JSON Path exists:json 表达式,判断所字段是否存在,存在则为True, 否则为 ...

  7. Pytorch 基本操作

    Pytorch 基础操作 主要是在读深度学习入门之PyTorch这本书记的笔记.强烈推荐这本书 1. 常用类numpy操作 torch.Tensor(numpy_tensor) torch.from_ ...

  8. react 高效高质量搭建后台系统 系列 —— antd和样式

    其他章节请看: react 高效高质量搭建后台系统 系列 antd 后续要做登录模块(主页),不仅要解决请求数据的问题,还需要完成 antd 配置以及样式的准备. antd 多种主题风格 详情请看 这 ...

  9. [cocos2d-x]关于3.x的触摸机制

    触摸机制的概念 通过对要监听触摸的节点进行注册,然后自定义相应的触摸函数,由事件监听器实现对触摸的监听并且实现相应的响应动作. 触摸的分类 单点触摸 下面是实现单点触摸监听的步骤: //第一步:先创建 ...

  10. flutter Error:Cannot run with sound null safety, because the following dependencies don't support

    学习flutter新版本的路上,真的是一天一个新惊喜啊 今天遇到的坑是 Flutter 升级高版本后,运行和build 报错 Error: Cannot run with sound null saf ...