SpringBoot 配置文件和日志文件

目录

一、SpringBoot配置文件

配置文件的格式

.properties配置文件格式 

.yml配置文件格式

.properties 与 .yml的区别

 配置文件的读取

.properties 与 .yml的区别

设置不同环境的配置⽂件

二、SpringBoot日志文件

日志打印的步骤

得到日志对象

方法一:使用日志工厂 LoggerFactory来得到日志对象

方法二:使用lombok可以更加高效的打印日志(推荐使用lombok)

日志级别 

⽇志级别设置

日志的持久化

lombok 更多注解说明

基本注解

组合注解


一、SpringBoot配置文件

        在项目中重要的配置信息都是在配置文件配置的,如果没有配置文件的话,一个项目都不会运行起来。

        配置文件里面都包含着连接数据库的用户名和密码、第三方系统的密钥、端口号的设置以及用于发现异常错误信息的普通日志和异常日志。因此配置文件是十分重要的。

配置文件的格式

Spring Boot项目中配置文件的格式有两种:

  • application.properties
  • application.yml

        appllication.properties配置文件格式比较早,可以理解为老款的配置文件,而application.yml是一种新的配置文件。

注意properties与yml的区别:

        理论上properties与yml可以共存在一个项目中,如果当properties与 yml存在一个项目中,并且这两个都配置了相同的配置时,此时项目配置文件以properties为主 ,因为properties的优先级比yml高,但加载完properties配置文件后也会加载.yml配置文件。

.properties配置文件格式 

.properties 是以键值的形式配置的,key 和 value 之间是以“=”连接的,如

注意:在.proerties配置文件中以#来添加注释

.yml配置文件格式

.yml基础语法是key: value
注意 :key 和 value 之间使⽤ 英⽂冒汗加空格 的方式组成的,其中的 空格不可省略

如果没有没有带空格的话,IDEA会自动显示字体颜色为灰色 

.yml配置信息注意:

  • 字符串默认不⽤加上单引号或者双引号
  • 单引号会转义特殊字符,特殊字符最终只是⼀个普通的字符串数据。
  • 双引号不会转义字符串⾥⾯的特殊字符;特殊字符会作为本身想表示的意思

.properties 与 .yml的区别

1、.properties的优先级比 .yml高。举例来说:当在这两个配置文件都配置了端口号,这两个端口号不相同时,会优先以.properties配置的为主

2、 .properties的配置文件比.yml冗余。

 配置文件的读取

这两个配置文件的数据读取方式都是一样的,使用@Value注解来读取

@Value 注解使⽤“${}”的格式读取

 读取代码如下

package com.example.demo;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

import javax.annotation.PostConstruct;

@Component
public class TestYml {
    @Value("${string.hello}")
    private String hello;
    @PostConstruct
    public void func(){
        System.out.println("配置文件读取结果:"+hello);
    }
}

 

@Component 在 Spring Boot 启动时候会注⼊到框架中,注⼊到框架中时会执⾏ @PostConstruct 初始化⽅法,这个时候就能读取到配置信息了。

在 yml 中配置对象

使用该注解来读取:@ConfigurationProperties

.properties 与 .yml的区别

1、.properties的优先级比 .yml高。举例来说:当在这两个配置文件都配置了端口号,这两个端口号不相同时,会优先以.properties配置的为主

2、 .properties的配置文件比.yml冗余。

3、.properties配置文件形式是key=value,而.yml配置文件是key: value。(冒号后面必须要带有一个空格)

4、yml 通⽤性更好,⽀持更多语⾔,如 Java、Go、Python 等,如果是云服务器开发,可以使⽤⼀份配置⽂件作为 Java 和 Go 的共同配置⽂件

5、yml对中文的兼容性很好,读取中文不会乱码,而.properties对中文的兼容性不是很友好,读取的时候大概率是乱码的

设置不同环境的配置⽂件

设置在不同的运行环境下的配置文件,主要是为了方便进行部署项目和修改配置文件。

设置不同的带有后缀名字来区分不同的配置文件

1、创建不同环境的配置⽂件:
  • application.yml      设置调用的配置文件
  • application-prod.yml    生产环境下的配置文件
  • application-dev.yml      测试环境下的配置文件

2、在application.yml里面修改要具体要调用哪一个配置文件

二、SpringBoot日志文件

在项目中,日志文件是十分重要的,它有如下功能:

1、记录⽤户登录⽇志,⽅便分析⽤户是正常登录还是恶意破解用户

2、记录项目中的报错信息

3、记录程序的执行时间 ,方便程序员来进行查看程序执行时间

总之,掌握日志的打印是一项必要的技能

日志打印的步骤

第一步:得到日志对象(Spring Boot 内置了⽇志框架,不然也输出不了⽇志

第二步:使用日志对象来打印日志

得到日志对象

方法一:使用日志工厂 LoggerFactory来得到日志对象

使用方法:将类的类型传入,方便知道日志的归属类,这样可以更好地去定位日志的问题所在。

   private static Logger logger = LoggerFactory.getLogger(SpringBootTest.class);
                                                //SpringBootTest为自己创建的类名

@RequestMapping("/hello")
@Controller
@ResponseBody
public class SpringBootTest {
    // 获取到日志对象
    private static Logger logger = LoggerFactory.getLogger(SpringBootTest.class);
    // 使用日志对象去打印日志对象
    @RequestMapping("/hi")
    public void saiHi(){
        logger.trace("trace");
        logger.debug("debug");
        logger.info("这是一个日志打印:inf0");
        logger.warn("warn");
        logger.error("error");
    }
}

 

方法二:使用lombok可以更加高效的打印日志(推荐使用lombok)

      在使用日志工厂LoggerFactory来得到日志对象,需要将每个类都要添加到其中十分麻烦,此时就可以使用lombok来获取日志对象,使用@Slf4j注解

使⽤ @Slf4j 注解,lombok 会自动提供 对象名log,在程序中使⽤ log 对象即可输⼊⽇志,并且 只能使⽤ log 对象才能输出

1)添加 lombok依赖

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

也可以在创建SpringBoot项目的时候添加lombok

2) 使用@Slf4j注解来打印日志对象

@RequestMapping("/hello")
@Controller
@ResponseBody
@Slf4j  //使用@Slf4j注解来获取日志对象
public class SpringBootTest {

    @RequestMapping("/hi")
        public void func(){ //直接拿lombok提供的log对象来打印日志
            log.trace("trace");
            log.error("error");
            log.warn("warn");
        }
}

 

 使用注解@Slf4j提供的日志对象log,这样就可以成功打印日志了

日志级别 

        当设置了不同的日志级别,我们就可以只看到相对应的日志级别,平时我们比较关注warn 和error级别,因此设置日志级别时为error和warn,这样我们就可以只看到这两个报错信息了。

        ⽇志级别可以帮你筛选出重要的信息,⽐如设置⽇志级别为 error,那么就可以只看程序的报错⽇志了,对于普通的调试⽇志和业务⽇志就可以忽略了,从⽽节省开发者信息筛选的时间。

日志有如下几种:

  • trace:微量,少许的意思,级别最低;
  • debug:需要调试时候的关键信息打印;
  • info:普通的打印信息(默认⽇志级别
  • warn:警告,不影响使⽤,但需要注意的问题;
  • error:错误信息,级别较⾼的错误⽇志信息

fatal:致命的,因为代码异常导致程序退出执⾏的事件。

1、级别依次由低到高:trace  --->  fatal

2、日志打印只会打印级别高于自己和自己本身的级别,级别低于自己的日志则不会打印

3、级别越高,收到的日志信息就会越来越少,比如设置了warn,则只会收到warn、error和fatal 的日志信息

⽇志级别设置

在配置文件里面设置日志级别

@RequestMapping("/hello")
@Controller
@ResponseBody
@Slf4j  //使用@Slf4j注解来获取日志对象
public class SpringBootTest {

    @RequestMapping("/hi")
        public void func(){ //直接拿lombok提供的log对象来打印日志
        // 配置文件里面配置了日志的隔离级别为warn,因此打印日志只会打印warn、error
            log.trace("trace");
            log.debug("debug");
            log.info("info");
            log.warn("warn");
            log.error("error");
        }
}

 对不同的目录设置不同的级别

日志的持久化

        我们在控制台看到的日志不能被永久的保留下来,当再次运行时就不能看到上一次的日志,因此需要我们希望能把日志能够永久的保留下来。

       想要将⽇志进⾏持久化,只需要在配置⽂件中指定⽇志的存储⽬录或者是指定⽇志保存⽂件名之后, Spring Boot 就会将控制台的⽇志写到相应的⽬录或⽂件下了

此时会在该路径下保存日志文件

lombok 更多注解说明

基本注解

注解
作⽤
@Getter
⾃动添加 getter ⽅法
@Setter
⾃动添加 setter ⽅法
@ToString
自动添加toString方法
@EqualsAndHashCode
⾃动添加 equals 和 hashCode ⽅法
@NoArgsConstructor
⾃动添加⽆参构造⽅法
@AllArgsConstructor
⾃动添加全属性构造⽅法,顺序按照属性的定义顺序
@NonNull
属性不能为 null
@RequiredArgsConstructor
⾃动添加必需属性的构造⽅法,final + @NonNull 的
属性为必需

组合注解

注解
作⽤
@Data
@Getter + @Setter + @ToString +
@EqualsAndHashCode +
@RequiredArgsConstructor +
@NoArgsConstructor

导入import lombok.Data包后,就可以使用@Data 注解来自动构建一个对象的set和get方法

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/25938.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【网络】- 计算机网络体系结构 - OSI七层模型、TCP/IP四层(五层)协议

目录 一、概述 二、计算机网络体系结构的形成  &#x1f449;2.1 分层的网络体系结构  &#x1f449;2.2 OSI 参考模型  &#x1f449;2.3 TCP/IP - 事实的国际标准 三、OSI 参考模型 四、TCP/IP 协议 一、概述 但凡学习计算机网络知识&#xff0c;肯定绕不过网络协议的&…

SpringMVC拦截器

SpringMVC拦截器 介绍 拦截器&#xff08;interceptor&#xff09;的作用 SpringMVC的拦截器类似于Servlet开发中的过滤器Filter&#xff0c;用于对处理器 进行预处理和后处理 将拦截器按一定的顺序连接成一条链&#xff0c;这条链称为拦截器链&#xff08;Interception Ch…

hive中如何计算字符串中表达式

比如 select 1(2-3)(-4.1-3.1)-(4-3)-(-3.34.3)-1 col ,1(2-3)(-4.1-3.1)-(4-3)-(-3.34.3)-1 result \ 现在的需求式 给你一个字符串如上述col 你要算出result。 前提式 只有和-的运算&#xff0c;而且只有嵌套一次 -(4-3)没有 -(-4(3-(31)))嵌套多次。 第一步我们需要将运…

【学习笔记】Python核心技术与实战-基础篇-03列表和元组,到底用哪个?

目录 列表和元组基础概念区别列表和元组的基础操作和注意事项列表和元组存储方式的差异列表和元组的性能列表和元组的使用场景总结思考题 列表和元组基础 概念 列表和元组&#xff0c;都是一个可以放置任意数据类型的有序集合。 在绝大多数编程语言中&#xff0c;集合的数据类…

js数据类型和六种运算结果为false的情况

数据类型 number&#xff1a;数字&#xff08;整数、小数、NaN(Not a Number)&#xff09; string&#xff1a;字符串、单双引皆可 boolean&#xff1a;布尔。true、false null&#xff1a;对象为空 undefined&#xff1a;当声明的变量初始化时&#xff0c;该变量的默认值…

JPEG压缩基本原理

JPEG算法的第一步是将图像分割成8X8的小块。 在计算机中&#xff0c;彩色图像最常见的表示方法是RGB格式&#xff0c;通过R(Red)、G(Green)A和(Blue)组合出各种颜色。 除此以外&#xff0c;还有一种表示彩色图像的方法&#xff0c;称为YUV格式。Y表示亮度&#xff0c;U和V表示…

Spring第三方bean管理

文章目录 1.第三方bean管理1.1 Bean1.2 小结 2.第三方bean依赖注入2.1 简单类型&#xff1a;成员变量2.2 引用类型&#xff1a;方法形参2.3 小结 3.总结 1.第三方bean管理 1.1 Bean 首先看一下目录结构&#xff0c;APP里面就初始化了SpringConfig文件 SpringConifg中就一句话…

C++11中的智能指针unique_ptr、shared_ptr和weak_ptr详解

目录 1、引言 2、什么是智能指针&#xff1f; 3、在Visual Studio中查看智能指针的源码实现 4、独占式指针unique_ptr 4.1、查看unique_ptr的源码实现片段 4.2、为什么unique_ptr的拷贝构造函数和复制函数被delete了&#xff1f;&#xff08;面试题&#xff09; 4.3、使…

Java网络开发(Tomcat)—— Servlet学习 Web相关背景知识 JavaWeb项目初步

本文目录 引出〇、域名、IP、端口一、软件架构BS和CS二、实现Web服务的条件和步骤三、Tomcat搭建Web项目初步1.pom.xml文件配置2.web.xml文件更新3.Tomcat运行环境配置4.项目文件层级解析 四、JavaWeb项目文件分类&#xff08;1&#xff09;静态文件—存放位置&#xff08;2&am…

今天面了个字节跳动拿30k出来的测试大佬,让我见识到了什么是天花板

2022年堪称大学生就业最难的一年&#xff0c;应届毕业生人数是1076万。失业率超50%&#xff01; 但是我观察到一个数据&#xff0c;那就是已经就业的毕业生中&#xff0c;计算机通信等行业最受毕业生欢迎&#xff01; 计算机IT行业薪资高&#xff0c;平均薪资是文科其他岗位的…

【Linux】常用命令的汇总学习

文章目录 1.目录切换命令2.目录操作命令3.把ls -l中包含字母file&#xff08;不区分大小写&#xff09;的内容输出4.统计txt中的某个字符串5.grep命令的使用6.linux查找当前目录下所有txt文件7.linux中的find命令8.查看系统所有的进程信息9.如何确定文件的类型10.tar解压缩11.U…

Java数据驱动:CData JDBC Drivers 2022 Crack

JDBC 驱动程序 易于使用的 JDBC 驱动程序&#xff0c;具有强大的企业级功能 无与伦比的性能和可扩展性。 对实时数据的简单 JDBC/SQL 访问。 从流行的 BI 工具访问实时数据。 集成到流行的 IDE 中。 CData JDBC Drivers Software 是领先的数据访问和连接解决方​​案提供商。我…

如何更改 Linux 文件和目录权限?

在Linux系统中&#xff0c;文件和目录权限是安全性和访问控制的关键组成部分。正确设置文件和目录的权限可以确保只有授权的用户能够读取、写入或执行这些文件和目录。 本文将详细介绍如何在Linux系统中更改文件和目录的权限。 1. 文件和目录权限概述 在Linux系统中&#xff…

【sentinel】漏桶算法在Sentinel中的应用

漏桶算法介绍 漏桶算法&#xff0c;又称leaky bucket。 从图中我们可以看到&#xff0c;整个算法其实十分简单。首先&#xff0c;我们有一个固定容量的桶&#xff0c;有水流进来&#xff0c;也有水流出去。对于流进来的水来说&#xff0c;我们无法预计一共有多少水会流进来&am…

AUTOSAR通信篇 - CAN网络通信(二:CanIf)

目录 初始化 数据发送 请求发送 发送数据流 发送缓存 发送确认 数据接收 数据接收提醒 读取接收数据 CAN控制器模式 控制器模式转换 唤醒 PDU通道模式控制 PDU通道组 PDU通道模式 总结 在上一篇&#xff0c;我们介绍了CAN模块&#xff0c;接下来我们介绍在CAN模…

基于html+css的图展示96

准备项目 项目开发工具 Visual Studio Code 1.44.2 版本: 1.44.2 提交: ff915844119ce9485abfe8aa9076ec76b5300ddd 日期: 2020-04-16T16:36:23.138Z Electron: 7.1.11 Chrome: 78.0.3904.130 Node.js: 12.8.1 V8: 7.8.279.23-electron.0 OS: Windows_NT x64 10.0.19044 项目…

ts报错“this“ 隐式具有类型 “any“,因为它没有类型注释。解决方案

序 1、参考博文》①严格模式 - 知乎&#xff0c;②ts的tsconfig.son中文说明③TypeScript Number | 菜鸟教程 2、解决&#xff08;ts报错“this“ 隐式具有类型 “any“&#xff0c;因为它没有类型注释。&#xff09; 3、解决&#xff08;函数内this是undefined 的问题&#xf…

STM32CubeIDE + HAL + STM32f103C8T6 系列教程1 ---板载PC13LED闪烁

STM32CubeIDE HAL STM32f103C8T6 系列教程1 --- 板载PC13LED闪烁 引言硬件关于开发板[^2]控制器内置存储器原理图 硬件连线硬件连接表硬件连线图 软件STM32CubeIDE下载及安装Stm32CubeIDE设置补全快捷键和主题新建一个工程选择开发板核心芯片型号设置工程相关参数STM32CubeMX…

《程序员面试金典(第6版)》面试题 02.08. 环路检测(哈希法,双指针,检测链表是否有环)

题目描述 给定一个链表&#xff0c;如果它是有环链表&#xff0c;实现一个算法返回环路的开头节点。若环不存在&#xff0c;请返回 null。 题目传送门&#xff1a;面试题 02.08. 环路检测 如果链表中有某个节点&#xff0c;可以通过连续跟踪 next 指针再次到达&#xff0c;则链…

【笔记整理】常见聚类算法

【笔记整理】常见聚类算法 文章目录 【笔记整理】常见聚类算法一、均值偏移 - Mean-shift&#xff08;★★★★&#xff09;1、概述 & 图解&#xff08;“偏心”&#xff09;2、公式 & 步骤1&#xff09;基本公式&#xff08;“偏移量更新圆心”&#xff09;2&#xff…