SpringBoot 配置文件和日志文件

news2024/9/29 17:22:09

目录

一、SpringBoot配置文件

配置文件的格式

.properties配置文件格式 

.yml配置文件格式

.properties 与 .yml的区别

 配置文件的读取

.properties 与 .yml的区别

设置不同环境的配置⽂件

二、SpringBoot日志文件

日志打印的步骤

得到日志对象

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

方法二:使用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 就会将控制台的⽇志写到相应的⽬录或⽂件下了

 

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

 

 

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

vulnhub靶场之RAGNAR LOTHBROK: 1

1.信息收集 探测存活主机&#xff0c;输入&#xff1a;netdiscover -r 192.168.239.0/24 &#xff0c;发现192.168.239.178存活。 对目标主机192.168.239.178进行端口扫描&#xff0c;发现存活21(ftp)、80、443、3306端口。 浏览器访问http://192.168.239.178&#xff0c;发…

设计模式 - 代理模式

基本介绍: 代理模式&#xff1a;为一个对象提供一个替身&#xff0c;以控制对这个对象的访问。即通过代理 对象访问目标对象.这样做的好处是:可以在目标对象实现的基础上,增强额外的 功能操作,即扩展目标对象的功能。被代理的对象可以是远程对象、创建开销大的对象或需要安全控…

chatgpt赋能python:Python三次方根的用途和计算方法

Python三次方根的用途和计算方法 如果您是一位Python编程工程师&#xff0c;您可能会经常需要用到Python的数学计算功能。在这篇文章中&#xff0c;我们将探讨Python三次方根的概念和使用&#xff0c;以及如何在Python中计算三次方根。 什么是三次方根&#xff1f; 三次方根…

SpringBoot 框架

SpringBoot 框架 SpringBoot 简介SpringBoot 开发步骤SpringBoot工程快速启动SpringBoot概述起步依赖自动装配切换web服务器 配置文件配置文件格式yaml格式yaml配置文件数据读取Value注解读取配置文件Environment对象自定义对象多环境配置 SpringBoot 整合 SpringBoot 简介 Sp…

这个 计数排序详解过程 我能吹一辈子!!!

文章目录 计数排序概念计数排序算法思路计数排序算法过程计数排序代码实现计数排序缺陷 计数排序概念 计数排序是一个非基于比较的排序算法&#xff0c;元素从未排序状态变为已排序状态的过程&#xff0c;是由额外空间的辅助和元素本身的值决定的。该算法于1954年由 Harold H.…

流行框架(一)EventBus(组件通信)、ARouter(页面跳转)

文章目录 EventBus基本使用EventBus三要素五种线程模式使用步骤EventBus黏性事件&#xff08;sticky event&#xff09; 工作原理中介者模式源码解读Event Bus中介者对象register() / 注册发布事件 / post Arouter组件化开发组件化开发的优点组件分层方案组件化的gradle工程 AR…

C919商业首航 背后功臣风洞实验室有多牛

5月28日&#xff0c;国产大型客机C919&#xff0c;顺利完成商业首航。 首航背后意味着该机型从研发、制造、取证到投运全面贯通&#xff0c;广大旅客终于有机会坐国产大飞机出行了。 很多人不知道C919其实是依托我国独立自主设计制造的世界级风洞群和风洞实验室反复测试“百炼…

Linux部署jumpserver堡垒机及问题汇总

部署过程相对复杂&#xff01;请耐心浏览&#xff01; 目录 一、jumpserver堡垒机简介 1.1 为什么需要使用堡垒机? 1.2 堡垒机主要功能 二、准备工作 2.1 关闭防火墙以及SElinux 1.2 时间同步 1.3 更改主机名 1.4 yum源备份及准备 1.5 安装初始工具 1.6 修改系统字…

基于PS-InSAR技术的形变监测分析流程

基于PS-InSAR技术的形变监测分析流程 文章目录 基于PS-InSAR技术的形变监测分析流程1. 背景知识1.1 PS-InSAR技术1.1.1 雷达干涉测量1.1.2 InSAR技术1.1.3 技术原理1.1.4 技术特征1.1.5 技术优化1.1.6 应用 1.2 Sentinel-1数据1.2.1 Sentinel-1简介1.2.2 Sentinel-1扫描模式1.2…

一分钟学会怎么让chatGPT帮你写python代码(含使用地址)

一分钟学会怎么让chatGPT帮你写python代码&#xff08;含使用地址&#xff09; 我们用chatGPT做一个python的计算器脚本为例 提出需求 1、给定角色定位 2、提出要求 3、提出要求的细节 标题等待片刻&#xff0c;等待chatGPT生成脚本即可 import tkinter as tkclass Calc…

去公司面试,10:00刚进去,10:08就出来了 ,问的实在是太...

从外包出来&#xff0c;没想到算法死在另一家厂子 自从加入这家公司&#xff0c;每天都在加班&#xff0c;钱倒是给的不少&#xff0c;所以也就忍了。没想到8月一纸通知&#xff0c;所有人不许加班&#xff0c;薪资直降30%&#xff0c;顿时有吃不起饭的赶脚。 好在有个兄弟内…

33 KVM管理设备-配置虚拟机PCIe控制器

文章目录 33 KVM管理设备-配置虚拟机PCIe控制器33.1 概述33.2 配置PCIe Root、PCIe Root Port和PCIe-PCI-Bridge33.2.1 简化配置方法33.2.1完整配制方法 33 KVM管理设备-配置虚拟机PCIe控制器 33.1 概述 虚拟机内部的网卡、磁盘控制器、PCIe直通设备都需要挂接到PCIe Root Po…

IOC源码解析

目录 主要从3方面进行解析 Bean与BeanDefinition 容器初始化主要做的事情(主要脉络) BeanFactory ApplicationContext 模板方法模式 Resource、ResourceLoader、容器之间的关系 BeanDefinitionReader BeanDefinition的注册 小结 主要从3方面进行解析 解析配置定位与注…

EMNLP -- Call for Main Conference Papers

以下内容链接&#xff1a;Call for Main Conference Papers - EMNLP 2023 目录 审核流程&#xff1a; 与 ARR 的交叉提交政策 注意&#xff1a; 注意&#xff1a; 重要日期 强制性摘要提交 提交方向 论文提交信息 论文提交和模板 确认 长论文 短文 贡献 演示模式 著作权 引用与…

Vue设计记事本

项目描述 项目实现功能有&#xff1a;记录今天要完成的任务&#xff0c;勾选已经完成的任务&#xff0c;删除已经完成的全部任务。 界面展示&#xff1a; 代码展示 创建一个Myitem.vue文件夹 <template><li><label ><input type"checkbox"…

机器学习 监督学习 Week2

Lib01 多变量线性回归 依旧是房价预测&#xff0c;但这次引入了多个变量&#xff0c;不仅仅只有房屋面积影响着房价&#xff0c;依旧尝试使用梯度下降算法找到最优的【w,b】&#xff0c;并且习惯使用向量点乘运算提高效率 import copy, math import numpy as np import matplot…

微内核和大内核

微内核和大内核是操作系统内核的两种不同设计思路。 图片来源 微内核 微内核是指将操作系统内核中的核心功能&#xff08;如进程管理、内存管理、设备驱动等&#xff09;作为独立进程运行&#xff0c;各进程间通过IPC(进程间通信)进行通讯。其中微内核相当于一个消息中转站&…

华为OD机试真题B卷 Java 实现【数据最节约的备份方法】,附详细解题思路

一、题目描述 有若干个文件&#xff0c;使用刻录光盘的方式进行备份&#xff0c;假设每张光盘的容量是500MB。 求使用光盘最少的文件分布方式&#xff0c;所有文件的大小都是整数的MB&#xff0c;且不超过500MB&#xff0c;文件不能分隔、分卷打包。 二、输入描述 每组文件…

AD PCB元器件封装设计方法

元器件封装界面 1.元器件可以新建PCB元件库&#xff0c;然后在新建的库中添加 2.也可以采用随便右键某个库中的元器件&#xff0c;选择“Edit…”&#xff0c;进入到元器件封装绘制界面。 元器件封装设计步骤 1.点击菜单栏工具——新的空元件&#xff1b;或者直接点击 Add&a…

认识.Net MAUI跨平台框架

.NET MAUI概念: 全称: .NET 多平台应用 UI (.NET MAUI) 是一个开源的跨平台框架&#xff0c;前身是Xamarin.Forms ! 用于使用 C# 和 XAML 创建本机移动和桌面应用。 NET MAUI&#xff0c;共享代码库,可在 Android、iOS、macOS 和 Windows 上运行的应用 应用架构: github 地址…