SpringBoot配置文件和日志

这篇具有很好参考价值的文章主要介绍了SpringBoot配置文件和日志。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

SpringBoot配置文件

SpringBoot配置文件的作用 

项目中的重要数据写在配置文件当中

降低代码耦合 

SpringBoot配置文件的格式 

properties配置文件

读取配置文件中的内容(@Value注解使用${}格式读取)

properties优缺点 

yml配置文件 

yml特点:

yml语法 

yml对于单双引号的问题 

yml配置对象多行写法 

yml 配置文件单行写法

获取对象:

①在yml配置文件中存放一个对象 

②新建一个实体类(与该对象保存一致)并注入到Spring容器 

③从配置文件中获取该对象 

④通过属性注入获取对象 

yml配置集合 

①在yml中存放一个集合

②注入集合

③获取bean对象 

properties和yml有什么区别(重要) 

SpringBoot日志 

日志的作用: 

如何使用日志: 

日志的级别 (由低到高):

日志的级别设置:

日志的持久化: 

①配置日志的保存路径 

②配置日志的文件名字

③更加简易的添加日志的方式:添加lombok

lombok常用注解:


SpringBoot配置文件

SpringBoot配置文件的作用 

项目中的重要数据写在配置文件当中

如:数据库的连接信息,项目的启动端口,第三方系统的日志信息等等,如果没有我们的配置文件,数据库就不能连接。

降低代码耦合 

在使用servlet的时候,包括使用JDBC编程的时候,数据库的连接信息都是写在java代码中的,在SpringBoot框架中则要写到配置文件中。

写到配置文件中就可以降低代码的耦合程度。 

配置文件中的内容便于开发者进行修改,如果写在java文件中,那么编译后的.class文件就是只可以读的,不能进行修改。而且写到配置文件中也便于开发者可以在配置文件中看到项目部署的端口号,数据库连接情况等等。

SpringBoot配置文件的格式 

一般是两种格式;

properties(默认)

yml(yaml)

SpringBoot配置文件和日志

如果这两个格式的配置文件都有的时候(不建议出现两种),优先以properties格式的为主,这也是SpringBoot约定大于配置的一个体现。

注意:两种格式,都得以application.properties和application.yml命名,因为SpringBoot启动的时候只读取application命名的配置文件。 

properties配置文件

键值对Key=Value的方式 

可以使用系统的配置,也可以自定义 

SpringBoot配置文件和日志

SpringBoot配置文件和日志

读取配置文件中的内容(@Value注解使用${}格式读取)

使用@Value注解来读取配置文件的内容,使用${}获取到配置文件中内容的赋值。

package com.example.demo.Controller;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
@ResponseBody
@RequestMapping("/user")
public class UserController {
    @Value("username")
    private String name;
    @RequestMapping("/sayHi")
    public String sayHi(){
        return "Hi "+ name;
    }
}

SpringBoot配置文件和日志

如果不加${}相当于@Value中的字符串赋值给了name。 

如果要获得赋值的配置文件则需要使用${}来获取。

package com.example.demo.Controller;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
@ResponseBody
@RequestMapping("/user")
public class UserController {
    @Value("${studentname}")
    private String name;
    @RequestMapping("/sayHi")
    public String sayHi(){
        return "Hi "+ name;
    }
}

SpringBoot配置文件和日志SpringBoot配置文件和日志

properties优缺点 

优点:

1.是系统默认的配置文件

2.优先级比yml高

3.格式简单

缺点:写法比较冗余(包名必须全都写上,很多相同包名下的配置都要写上包名)

SpringBoot配置文件和日志

yml配置文件 

yml是yaml的缩写,在使用配置文件时使用yml和yaml都可以,推荐使用yml。

yml可读性高,写法简单,易于理解,语法和JSON相似 

yml特点:

  1、写法简单、可读性高;

   2、支持更多的数据类型

   3、支持跨语言的使用(最大优势)

yml语法 

yml也是按照key:value的方式存储的,但是它的写法比properties更简洁。

SpringBoot配置文件和日志

tab和空格不能少,否则容器无法识别 

package com.example.demo.Controller;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController//==@Controller+@ResponseBody
public class StudentController {
    @Value("${server.bbbb}")
    private String name;
    @RequestMapping("/sayhi")
    public String sayHi(){
        return "Hi "+name;
    }

}

SpringBoot配置文件和日志

SpringBoot配置文件和日志

yml对于单双引号的问题 

SpringBoot配置文件和日志

前两种:

SpringBoot配置文件和日志

加双引号;

SpringBoot配置文件和日志

在网页中\n转义字符不好看出来。

SpringBoot配置文件和日志

yml配置对象多行写法 

#对象多行写法
student :
  id : 1
  name : 张三
  age : 18

yml 配置文件单行写法

#对象单行写法
student2 : {id : 2, name : 李四, age : 19}

获取对象:

①在yml配置文件中存放一个对象 

 SpringBoot配置文件和日志

②新建一个实体类(与该对象保存一致)并注入到Spring容器 

package com.example.demo;

import lombok.Data;
import org.springframework.stereotype.Component;

@Data
@Component
public class Student {
    private int id;
    private String name;
    private int age;
}

③从配置文件中获取该对象 

SpringBoot配置文件和日志

④通过属性注入获取对象 

package com.example.demo.controller;

import com.example.demo.Student;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;

@Controller
public class StudentController {
    @Autowired
    private Student student;
    
    public Student getStudent(){
        return student;
    }
}

yml配置集合 

#集合
#myName对应于实体类
#name是集合
myName : { name : [ 张三, 李四, 王五 ] }

①在yml中存放一个集合

SpringBoot配置文件和日志  

②注入集合

SpringBoot配置文件和日志

③获取bean对象 

package com.example.demo.controller;

import com.example.demo.MyNameController;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
@RequestMapping("/hello")
public class ListController {
    @Autowired
    private MyNameController myNameController;


@RequestMapping("/hi")
@ResponseBody
    public String getNames(){
        return myNameController.getName()+"";
    }
}

properties和yml有什么区别(重要) 

区别1:properties仅仅支持Java项目,但是yml支持包括Java在内的多种语言(例如python);

区别2:properties的key写起来比较冗余,不像yml那样简易。(yml支持层级,层级之间采用缩进的方式)

区别3:yml支持更多的数据类型(string,object,list)

SpringBoot日志 

日志的作用: 

1、发现和定位问题,报错了不查看日志,难以发现和定位问题

2、记录用户的登录日志,方便分析用户的登录状态,是恶意还是正常

3、记录系统的操作情况,定位操作人,操作时间和操作行为等等 

4、记录程序的执行时间,方便后续的优化等等.... 

如何使用日志: 

SpringBoot内置了日志框架,所以会有默认的日志。 

SpringBoot配置文件和日志  

使用日志,首先我们要找到日志的门面SLF4J ,然后根据SLF4J获取到日志对象,再进行使用。

SpringBoot配置文件和日志

package com.example.demo.controller;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/hello")
public class UserController {
    //通过slf4j获取日志对象
    private static Logger logger= LoggerFactory.getLogger(UserController.class);
    //输出日志
    @RequestMapping("/hi")
    public void sayhi(){
        logger.info("hi i'm info");
        logger.debug("hi i'm debug");
        logger.error("hi i'm error");
        logger.warn("hi i'm warn");
    }
}

SpringBoot配置文件和日志

日志的级别 (由低到高):

trace
      少许的日志,这一个是最低的级别。

debug
        这个级别用于"调试"的级别

info
       这个级别是普通的日志信息。(如果不指定日志的级别,那么默认就是这个)

warn
       警告日志:有一些地方存在警告的风险的,就需要使用到这个warn级别的日志

error
       错误级别的日志,如果发生了一些错误,那么就需要使用这个级别来记录。

fatal
       发生了比较致命的情况,需要由系统来进行输出,不可以由用户手动进行debug输出。
 

 默认的级别是info,所以一般情况下只会出现info及其以上的日志,较为低级的日志一般不会出现。

日志的级别设置:

日志的默认级别是info,所以info以上的日志一般不会出现,但是这个默认的级别是可以通过配置文件进行修改的。(注意:fatal是由系统输出的,不能我们手动进行debug输出)

SpringBoot配置文件和日志

当我们修改默认级别为error的时候,控制台就基本没有日志

SpringBoot配置文件和日志上述是全局日志的设定,当然也有局部日志的设定,但是局部日志的设定要服从全局 

SpringBoot配置文件和日志

日志的持久化: 

日志的持久化,说白了就是把日志存在本地的磁盘 

①配置日志的保存路径 

这里的路径中要用“/” ,因为“/”会被认为是特殊符号

SpringBoot配置文件和日志 目标目录下就会有个日志文件:

SpringBoot配置文件和日志

②配置日志的文件名字

 SpringBoot配置文件和日志

SpringBoot配置文件和日志

③更加简易的添加日志的方式:添加lombok

1、安装一个EditStarters插件:

SpringBoot配置文件和日志

2、添加@Slf4j注解

SpringBoot配置文件和日志

SpringBoot配置文件和日志

那么为什么@Slf4j就可以生成一个log对象呢?这个主要是因为在编译时期@Slf4j会为当前类当中设置一个静态从常量属性,这一个属性就是log。

我们可以看看UserController的字节码文件:

SpringBoot配置文件和日志

lombok常用注解:

⽇志注解

注解 作⽤
@Slf4j 添加⼀个名为 log 的⽇志,使⽤ slf4j

基本注解

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

组合注解:

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

注解的原理,就是在编译时期添加对应的方法 文章来源地址https://www.toymoban.com/news/detail-452790.html

到了这里,关于SpringBoot配置文件和日志的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • SpringBoot3中的属性绑定注解和YMAL配置文件、日志

    SpringBoot摒弃XML配置方式,改为 全注解驱动 1. 组件注册 @Configuration 、 @SpringBootConfiguration @Bean 、 @Scope @Controller 、 @Service 、 @Repository 、 @Component @Import @ComponentScan 步骤: 1、@Configuration 编写一个配置类 2、在配置类中,自定义方法给容器中注册组件。配合@Bean 3、或使用@Import

    2024年02月11日
    浏览(43)
  • 深入理解 SpringBoot 日志框架:从入门到高级应用——(五)Log4j2配置文件详解

    Log4j2 官方文档:https://logging.apache.org/log4j/2.x/manual/index.html Log4j2 是一个Java日志框架,用于记录应用程序在运行时的信息。它是 Log4j 的升级版本,提供了更快的处理速度,更快的日志记录和更丰富的日志记录功能,并支持异步日志记录,减少了对应用程序性能的影响。它可以

    2024年02月05日
    浏览(36)
  • 关于磁盘空间不够,导致报错 springboot内置tomcat相关的临时目录无法创建等问题,如何自定义配置 tomcat 缓存文件路径

    关于磁盘空间不够,导致报错 springboot内置tomcat相关的临时目录无法创建等问题,如何自定义配置 tomcat 缓存文件路径 解决方法: shell 脚本命令:(配置自定义缓存路径参数 -Djava.io.tmpdir ) 注意: tmpPath 的绝对路径值必须是 / 斜杠结尾。 1. springboot内置tomcat相关的临时目录自

    2024年02月09日
    浏览(40)
  • golang判断目录是否存在和生成日志文件

    package main import (     \\\"fmt\\\"     \\\"io\\\"     \\\"os\\\"     \\\"time\\\"     \\\"github.com/sirupsen/logrus\\\" ) func main() {     defer func() {         err := recover()         if err != nil {             logrus.Info(err)         }     }()     log_path := \\\"runtime/logs/\\\"     _, err := os.Stat(log_path)     if err != nil {         i

    2024年02月16日
    浏览(48)
  • Linux 更加优雅地运行 JAR 文件,并将日志文件输出到本地目录,并优雅的查看日志文件信息

    方式一:直接运行jar包,最常用的启动jar包命令,特点:当前ssh窗口被锁定,CTRL + C或关闭窗口,将打断程序运行,程序退出 方式二:代表在后台运行 ,CTRL + C后程序不会被终止,关闭SSH客户端连接,将终止程序 使用 nohup 命令将进程放入后台运行,并使用 符号使命令立即返

    2024年02月16日
    浏览(37)
  • 软件测试Pytest实现接口自动化应该如何在用例执行后打印日志到日志目录生成日志文件?

    Pytest可以使用内置的logging模块来实现接口自动化测试用例执行后打印日志到日志目录以生成日志文件。以下是实现步骤: 1、在pytest配置文件(conftest.py)中,定义一个日志输出路径,并设置logging模块。 2、在测试用例中调用logging模块,输入需要生成的日志信息。 3、运行p

    2024年02月10日
    浏览(45)
  • SpringBoot实现文件记录日志,日志文件自动归档和压缩

    😊 @ 作者: Eric 💖 @ 主页: https://blog.csdn.net/weixin_47316183?type=blog 🎉 @ 主题: SpringBoot实现文件记录日志,日志文件自动归档和压缩 ⏱️ @ 创作时间: 2023年08月06日 Logback 是一个Java日志框架,它是 log4j 的后继者,被广泛用于应用程序中记录日志。 Logger(日志记录器): L

    2024年02月14日
    浏览(24)
  • springboot-静态资源目录的配置

    配置节点:spring.web.resources.static-locations 值为要配置的静态资源存放目录 如: 以上配置中,设置静态资源目录为src/main/resources/test/目录。 假如在test目录下存放文件test.txt,程序启动后,便能通过浏览器访问ip:port/test.txt访问文件。 新建WebMvcConfig类,继承WebMvcConfigurationSupport类

    2024年02月16日
    浏览(31)
  • SpringBoot获取jar文件所在目录

    例如我把jar文件放在/opt/test/目录下,并且把当前工作目录定位在/opt/test/目录下,获取到的结果确实是:/opt/test/ 但是! 但是! 但是!当我把工作目录切换(cd /home/)到其它地方:例如:/home/ 这时候再次通过上面的方式获取到的结果就不是理想的结果了,而是:/home/ 之后我

    2024年02月09日
    浏览(28)
  • nginx上web服务的基本安全优化、服务性能优化、访问日志优化、目录资源优化和防盗链配置简介

    目录 一.基本安全优化 1.隐藏nginx软件版本信息 2.更改源码来隐藏软件名和版本 (1)修改第一个文件(核心头文件),在nginx安装目录下找到这个文件并修改 (2)第二个文件 (3)第三个文件,内置响应信息页面 (4)第四个文件 (5)重新编译安装并重启 3.更改nginx服务的默

    2024年02月13日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包