Spring Boot笔记总结(第二天)

本文详细介绍了Spring Boot如何使用slf4j日志,包括slf4j介绍、配置日志输出格式和存储路径、使用Logger在项目中打印日志。此外,还讲解了Spring Boot的项目属性配置,如配置文件的使用、配置信息的读取,以及开发环境和生产环境配置的切换。最后,讨论了Spring Boot的MVC支持,重点介绍了@RestController、@RequestMapping等注解的使用。
摘要由CSDN通过智能技术生成

一、Spring Boot使用slf4j日志

在开发中经常使用 System.out.println()来打印一些信息,但是这样不好,因为大量的使用 System.out 会增加资源的消耗。实际项目中使用的是 slf4j 的 logback 来输出日志,效率挺高的,Spring Boot 提供了一套日志系统,logback 是最优的选择。

控制台打印输出日志

System.out.println(需要输出的内容字符串)

一般在开发阶段需要输出的信息较多,作为产品部署后则输出信息较少,引入了一种常量的定义方式以控制是否输出日志

可以通过 Constants 接口中的常量定义是否需要输出,或者使用 int 型来控制不同的输出等级

外观模式:【应用场景、优缺点、编码】,提醒大家必须记忆设计模式中的 6 大原则

为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。可以降低访问复杂系统的内部子系统时的复杂度,简化客户端之间的接口。属于 23 种设计模式中的结构型设计模式

优点: 1、减少系统相互依赖。 2、提高灵活性。 3、提高了安全性。

缺点:不符合开闭原则,如果要改东西很麻烦,继承重写都不合适。

编码实现:

1.产品接口

public interface Shape { public void draw();

}

2.具体实现

  1. 定义子系统的外观或者门面。该子系统中包括多个产品组件class ShapeFacade {

private Circle circle; private Square square; public ShapeFacade(){ circle=new Circle(); square=new Square();

}

public void drawCircle(){ circle.draw();

}

public void drawSquare(){ square.hashCode();

}

public void drawCircleAndSqure(){ circle.draw(); square.draw();

}

}

后记:事实上感觉笔记中提到的计算机案例似乎更能说明问题,建议参考感觉电脑的例子更形象:电脑整机是 CPU、内存、硬盘的外观。有了外观以后,启动电脑和关闭电脑都简化了。直接 new 一个电脑。在 new 电脑的同时把 cpu、内存、硬盘都初始化好并且接好线。对外暴露方法(启动电脑,关闭电脑)。

启动电脑(按一下电源键):启动 CPU、启动内存、启动硬盘关闭电脑(按一下电源键):关闭硬盘、关闭内存、关闭 CPU

1. slf4j 介绍

SLF4J 即简单日志门面,不是具体的日志解决方案,它只服务于各种各样的日志系统。按照官方的说法,SLF4J 是一个用于日志系统的简单 Facade,允许最终用户在部署其应用时使用其所希望的日志系统。

这里的意思是:只需要按统一的方式写记录日志的代码,而无需关心日志是通过哪个日志系统,以什么风格输出的。因为它们取决于部署项目时绑定的日志系统。例如,在项目中使用了 slf4j 记录日志,并且绑定了 log4j,即导入相应的依赖,则日志会以 log4j 的风格输出;后期需要改为以 logback 的风格输出日志,只需要将 log4j 替换成 logback 即可,不用修改项目中的代码。这对于第三方组件的引入的不同日志系统来说几乎零学习成本,况且它的优点不仅仅这一个而已,还有简洁的占位符的使用和日志级别的判断。

2.slf4j-log4j 通过 slf4j 调用 log4j 的实现

1.添加依赖

2.在 resources 根目录下创建一个 log4j 的配置文件 log4j.properties

log4j.rootLogger=DEBUG, stdout 根日志记录器,参数 1 为需要输出的日志等级,参数 2 为日志输出的目标地名称 stuout

log4j.appender.stdout=org.apache.log4j.ConsoleAppender 设置 stdout 是控制台

输出

log4j.appender.stdout.layout=org.apache.log4j.PatternLayout 配置日志输出的

格式

log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n

3.编程中使用日志记录器输出用户自定义日志信息

4.Log4j 输出的目的地

org.apache.log4j.ConsoleAppender(控制台) org.apache.log4j.FileAppender(文件) org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件) org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件) org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)

SpringBoot 输出日志 debug:

true 在 SpringBoot 框架启动时自动输出日志信息,同时显示相互之间的依赖关系。仅仅用于开发阶段,产品阶段一定关闭,或者删除该配置

正因为 sfl4j 有如此多的优点,阿里已经将 slf4j 作为他们的日志框架了。在《阿里 Java 开发手册(正式版)》中,日志规约一项第一条就强制要求使用 slf4j:

1.【强制】应用中不可直接使用日志系统(Log4j、Logback)中的 API,而应依赖使用日志框架 SLF4J 中的 API,使用门面模式的日志框架,有利于维护和各个类的日志处理方式统一。

强制两个字体现出了 slf4j 的优势,所以建议在实际项目中,使用 slf4j 作为自己的日志框架。使用 slf4j 记录日志非常简单,直接使用 LoggerFactory 创建即可。

目前 SpringBoot 针对日志系统默认采用 logback

import org.slf4j.Logger; import org.slf4j.LoggerFactory;

public class Test { private static final Logger logger = LoggerFactory.getLogger(Test.class);

// ……

}

5. application.yml 中对日志的配置

Spring Boot 对 slf4j 支持的很好,内部已经集成了 slf4j,一般在使用的时候,会对 slf4j 做一下配置。 application.yml 文件是 Spring Boot 中唯一需要配置的文件,一开始创建工程的时候是 application.properties 文件,一般推荐使用 yml 文件,因为 yml 文件的层次感特别好,看起来更直观,但是 yml 文件对格式要求比较高,比如英文冒号后面必须要有个空格,否则项目估计无法启动,而且也不报错。用 properties 还是 yml 视个人习惯而定,实际上都是可以的。 application.yml 文件中对日志的配置:

logging:

config: logback.xml

level: 针对不同的包可以设置不同的日志输出等级,基本格式为【包名称: 等级】

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值