SpringBoot:ch02 配置文件(日志)

前言

简单介绍 Spring Boot 中常见的配置文件类型,如 application.properties 和 application.yml 等,并说明它们各自的特点和用途。

一、前期准备

1、新建项目,结构如下

2、添加依赖
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.7.17</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>edu.nf</groupId>
    <artifactId>ch02</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>ch02</name>
    <description>ch02</description>
    <properties>
        <java.version>11</java.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <image>
                        <builder>paketobuildpacks/builder-jammy-base:latest</builder>
                    </image>
                </configuration>
            </plugin>
        </plugins>
    </build>

</project>

这是一个 Maven 的 pom.xml 文件,它描述了一个 Spring Boot 项目的依赖关系和构建方式。

在这个文件中,我们定义了两个依赖项:

  1. spring-boot-starter:这是一个 Spring Boot 的核心依赖,它包含了 Spring MVC、Spring Data JPA、Spring Security 等常用模块,并且自动配置了这些模块所需的环境。通过引入这个依赖,我们可以快速搭建一个基于 Spring Boot 的 Web 应用程序。

  2. spring-boot-starter-test:这是一个 Spring Boot 的测试依赖,它提供了许多用于测试的工具和框架,例如 JUnit、Mockito、Hamcrest 等。通过引入这个依赖,我们可以轻松地编写和执行单元测试和集成测试。

此外,我们还定义了一个 Maven 插件 spring-boot-maven-plugin,用于将应用程序打包成一个可执行的 JAR 文件,以便于部署和运行。在这个插件中,我们还可以配置容器、端口等参数,以满足不同的应用程序需求。

总之,pom.xml 文件是 Spring Boot 项目的配置文件,它定义了项目的依赖关系和构建方式,并且通过 Maven 插件实现了对应用程序的打包和部署

3、新建一个 DemService 类

@Service
public class DemService {
    private final static Logger log = LoggerFactory.getLogger(DemService.class);

    public void add(){
        log.info("日志记录...");
    }

}

这是一个简单的 DemService 类的示例,它使用了 Spring 的 @Service 注解来标记这个类是一个服务组件。

在这个类中,我们定义了一个静态的 Logger 对象 log,用于记录日志。这个对象是通过 LoggerFactory.getLogger() 方法获取的,其中传入的参数是 DemService.class,表示要获取该类的日志记录器。

接下来,我们定义了一个名为 add() 的方法,用于执行一些逻辑操作。在这个方法中,我们通过 log.info() 方法记录了一条日志信息,使用了 info 级别的日志级别。日志级别可以根据需要进行调整,常见的级别包括 debuginfowarnerror 等。

通过使用 @Service 注解,Spring 会自动将 DemService 类识别为一个服务组件,并将其加入到应用程序的 IOC 容器中。这样,在其他需要使用 DemService 的地方,可以直接通过依赖注入的方式获取到 DemService 的实例,并调用其中的方法。

总之,DemService 类是一个示例的服务组件,它使用了日志记录功能,并通过 @Service 注解将其纳入到 Spring 的 IOC 容器中,以便在其他地方进行使用。

二、配置application.properties

# 设置控制台日志输出格式
logging.pattern.console= %d{yyy-MM-dd HH:mm:ss} [%t] %-5p %C - %m%n
# 设置文件日志的输出格式
logging.pattern.file= %d{yyy-MM-dd HH:mm:ss} [%t] %-5p %C - %m%n
# 设置日志文件的名称以及保存的位置
logging.file.name = logs/test.log
# 设置日志的默认输出级别
logging.level.root = info
# 设置滚动日志(默认的滚动策略是文件大小结合日期进行滚动)
# ${LOG_FILE} 引用 springboot 默认文件输出位置
logging.logback.rollingpolicy.file-name-pattern= ${LOG_FILE} .%d{yyy-MM-dd}.%i.log
# 设置滚动日志的大小(默认10mb)
logging.logback.rollingpolicy.max-file-size= 20MB
# 保留滚动日志的历史天数(默认只保存近7天的日志文件)
logging.logback.rollingpolicy.max-history= 30
# 一直保持彩色日志,例如在单元测试中输出的日志
spring.output.ansi.enabled= always

这是一个Spring Boot项目的日志配置文件,包括控制台输出格式、文件输出格式、日志文件名称和位置、默认输出级别、滚动日志等。其中,%d{yyy-MM-dd HH:mm:ss}表示日期时间格式,[%t]表示线程名,%-5p表示日志级别,%C表示类名,%m表示日志消息,%n表示换行符。logging.logback.rollingpolicy.file-name-pattern指定了滚动日志文件名的格式,%d{yyy-MM-dd}表示日期格式,%i表示当前日志文件的索引号(从0开始)。logging.logback.rollingpolicy.max-file-size设置单个日志文件的最大大小,logging.logback.rollingpolicy.max-history设置保留的历史日志文件天数。spring.output.ansi.enabled设置彩色输出,always表示一直输出彩色日志。

 

三、配置 application.yml 

spring:
  output:
    ansi:
      # 一直保持彩色日志,例如在单元测试中输出的日志
      enabled: always

# 设置控制台日志输出格式
logging:
  pattern:
    console: "%d{yyy-MM-dd HH:mm:ss} [%t] %-5p %C - %m%n"

    # 设置文件日志的输出格式
    file: "%d{yyy-MM-dd HH:mm:ss} [%t] %-5p %C - %m%n"

  # 设置日志文件的名称以及保存的位置
  file:
    name : "logs/test.log"

  # 设置日志的默认输出级别
  level:
    root : info

  logback:
    rollingpolicy:
      # 设置滚动日志(默认的滚动策略是文件大小结合日期进行滚动)
      # ${LOG_FILE} 引用 springboot 默认文件输出位置
      file-name-pattern: "${LOG_FILE} .%d{yyy-MM-dd}.%i.log"

      # 设置滚动日志的大小(默认10mb)
      max-file-size: 20MB

      # 保留滚动日志的历史天数(默认只保存近7天的日志文件)
      max-history: 30

 这是一个Spring Boot项目的日志配置文件,使用yml格式。其中的内容都是上面的一样的。这里说一些要注意的点。

# yml是一种主流的资源配置文件,具有缩进功能,阅读性更好,
# 每个父子节点使用冒号分隔,赋值的节点冒号后一定要有空格
# 当赋值的节点冒号后一定要有空格

四、测试类

注意:要测试这两个测试类要分开测试,因为他们的功能是一样的,运行的时候把其中一个名字改了,不然就会冲突了。


@SpringBootTest
class Ch02ApplicationTests {

    @Autowired
    private DemService service;

    @Test
    void contextLoads() {
        service.add();
    }

}

 把 DemService 注入进来,调用其的方法,运行即可。

运行结果:

当运行结束后,会生成一个 logs 的文件用来保存我们的日志文件。

日志文件的内容如下:

2023-11-21 15:22:29 [main] INFO  org.springframework.boot.StartupInfoLogger - Starting Ch02ApplicationTests using Java 11.0.14 on LAPTOP-B1GJ9HN3 with PID 17664 (started by qiu in D:\作业汇总\S5\springBoot-demo\ch02)
2023-11-21 15:22:29 [main] INFO  org.springframework.boot.SpringApplication - No active profile set, falling back to 1 default profile: "default"
2023-11-21 15:22:29 [main] INFO  org.springframework.boot.StartupInfoLogger - Started Ch02ApplicationTests in 1.248 seconds (JVM running for 2.71)
2023-11-21 15:22:30 [main] INFO  edu.nf.ch02.service.DemService - 日志记录...

 

五、 application.properties 和 application.yml 的特点和区别

application.properties和application.yml是Spring Boot项目中常用的配置文件,它们用于配置应用程序的属性和设置。它们的主要区别在于格式不同。

1、application.properties

application.properties是一种基于键值对(key-value)的配置文件格式,它使用等号(=)分隔键和值。这种配置文件格式比较简单,易于阅读和编辑。可以通过在类路径下创建或修改application.properties文件来配置Spring Boot应用程序的属性。例如:

server.port=8080 spring.datasource.driverClassName=com.mysql.jdbc.Driver spring.datasource.url=jdbc:mysql://localhost:3306/mydb spring.datasource.username=root spring.datasource.password=123456

2、application.yml

application.yml是一种基于缩进(indentation)的配置文件格式,它使用冒号(:)分隔键和值。这种配置文件格式比较灵活,支持多层结构和列表,可以更好地组织和管理复杂的配置项。例如:

server: port: 8080 spring: datasource: driverClassName: com.mysql.jdbc.Driver url: jdbc:mysql://localhost:3306/mydb username: root password: 123456

总之,两者都是配置Spring Boot应用程序的属性和设置的文件,但application.yml更适合组织和管理复杂的配置项。选择哪种格式应该根据具体的需要和个人习惯来决定。

 

 

 

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

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

相关文章

如今 Android 开发都要转去做鸿蒙开发了吗?

近期&#xff0c;华为的鸿蒙&#xff08;Harmony OS&#xff09;操作系统引起了广泛的关注&#xff0c;一是被编写进了许多大学课程&#xff1b;二是不少互联网大厂在为布局鸿蒙系统而“招兵买马”。像美团、京东、网易、今日头条……等知名的互联网大厂&#xff0c;都已经发布…

Linux下Centos7 gcc/g++、动态库/静态库(动态/静态链接)

1.gcc/g gcc是对c语言代码进行编译链接&#xff0c;而g是对c代码进行编译链接&#xff0c;接下来我们只对gcc进行讲解&#xff0c;g的使用方法跟gcc是一样的。 编译链接的四个步骤: 1:预处理 2:编译 3:汇编 4:链接 注&#xff1a;这些在后面都会着重讲解 1.1gcc -o 我们先在D…

电机应用开发-编码器的使用

编码器 增量式编码器倍频技术 增量式编码器输出的常见脉冲波形信号形式&#xff1a; 占空比为50%的方波&#xff0c;通道A和通道B相位差为90。 正弦波的模拟信号&#xff0c;通道A和通道B相位差为90。 对于占空比为50%的方波&#xff0c;通道A和通道B相位差为90。先以下图为例…

Python实现WOA智能鲸鱼优化算法优化随机森林回归模型(RandomForestRegressor算法)项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档视频讲解&#xff09;&#xff0c;如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 鲸鱼优化算法 (whale optimization algorithm,WOA)是 2016 年由澳大利亚格里菲斯大学的Mirjalili 等提…

基于单片机设计的气压与海拔高度检测计(采用MPL3115A2芯片实现)

一、前言 随着科技的不断发展&#xff0c;在许多领域中&#xff0c;对气压与海拔高度的测量变得越来越重要。例如&#xff0c;对于航空和航天工业、气象预报、气候研究等领域&#xff0c;都需要高精度、可靠的气压与海拔高度检测装置。针对这一需求&#xff0c;基于单片机设计…

基于SSM的学院网站设计与实现

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;Vue 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#xff1a;是 目录…

2024年测试工程师必看比列之Unittest单元测试框架-知识点总结

unittest单元测试框架 1.导入unittest包 2.创建类的时候要继承与unittest.TestCase类 2.1&#xff0c;setUp方法是在类中测试执行前的初始化工作 2.2&#xff0c;tearDown方法是在类中测试执行后的清除工作 2.3&#xff0c;测试用例函数以test开头的方法是普通的测试用例方法&…

基于单片机的公共场所马桶设计(论文+源码)

1.系统设计 本课题为公共场所的马桶设计&#xff0c;其整个系统架构如图2.1所示&#xff0c;其采用STC89C52单片机为核心控制器&#xff0c;结合HC-SR04人体检测模块&#xff0c;压力传感器&#xff0c;LCD1602液晶&#xff0c;蜂鸣器&#xff0c;L298驱动电路等构成整个系统&…

通达信吊灯止损指标公式,根据波动幅度自动调整止盈止损

吊灯止损指标是由查克勒博(Chuck LeBeau)发明的&#xff0c;亚历山大埃尔德(Alexander Elder)在其著作《走进我的交易室》中介绍了这种止盈止损方法&#xff08;中文版翻译为倒挂式离场法则&#xff09;&#xff0c;它是根据平均真实波幅ATR设置跟踪止损。吊灯止损指标的目的是…

使用 LCM LoRA 4 步完成 SDXL 推理

LCM 模型 通过将原始模型蒸馏为另一个需要更少步数 (4 到 8 步&#xff0c;而不是原来的 25 到 50 步) 的版本以减少用 Stable Diffusion (或 SDXL) 生成图像所需的步数。蒸馏是一种训练过程&#xff0c;其主要思想是尝试用一个新模型来复制源模型的输出。蒸馏后的模型要么尺寸…

论文阅读:“基于特征检测与深度特征描述的点云粗对齐算法”

文章目录 摘要简介相关工作粗对齐传统的粗对齐算法基于深度学习的粗对齐算法 特征检测及描述符构建 本文算法ISS 特征检测RANSAC 算法3DMatch 算法 实验结果参考文献 摘要 点云对齐是点云数据处理的重要步骤之一&#xff0c;粗对齐则是其中的难点。近年来&#xff0c;基于深度…

VM——绘制亮度均匀性曲线

1、需求:检测汽车内饰氛围灯的亮度均匀性,并绘制均匀性曲线 2、结果: 3、方法: 主要分为3步 (1)提取氛围灯ROI,忽略背景 (2)对提取到的ROI图进行切片处理,计算出每个切片的亮度均值 (3)绘制均匀性曲线 3.1 提取氛围灯ROI step1: 转成黑白图 step2:通过blob和…

【图像分类】【深度学习】【Pytorch版本】Inception-ResNet模型算法详解

【图像分类】【深度学习】【Pytorch版本】Inception-ResNet模型算法详解 文章目录 【图像分类】【深度学习】【Pytorch版本】Inception-ResNet模型算法详解前言Inception-ResNet讲解Inception-ResNet-V1Inception-ResNet-V2残差模块的缩放(Scaling of the Residuals)Inception-…

第1关:图的邻接矩阵存储及求邻接点操作

任务要求参考答案评论2 任务描述相关知识 顶点集合边集合编程要求测试说明 任务描述 本关任务&#xff1a;要求从文件输入顶点和边数据&#xff0c;包括顶点信息、边、权值等&#xff0c;编写程序实现以下功能。 1&#xff09;构造无向网G的邻接矩阵和顶点集&#xff0c;即图…

配置文件自动提示

1、引入依赖<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-configuration-processor</artifactId> </dependency> 2、修改IDEA配置

mysql底层是如何存放数据的

总览 首先总的来说&#xff0c;分为四个层级&#xff0c;行页区段。行就是数据库里的一行数据。 但一次从磁盘读进内存的数据量是一页&#xff08;页是读写的单位&#xff0c;默认16KB一页&#xff09;&#xff0c;页分很多种类&#xff0c;例如数据页、溢出页、undo日志页。 …

OpenAI宫斗,尘埃落定,微软成最大赢家

周末被OpenAI董事会闹剧刷屏,ChatGPT之父Sam Altman前一天被踢出董事会,免职CEO,后一天重返OpenAI,目前结局未知。 很多同学想要围观,缺少背景知识,这里老章为大家简单介绍前因后果及涉及的人物,时间线,让大家轻松围观。 备好瓜子,开始。 1、主角 先看一张图,看一…

Java基于B/S架构,包括PC后台管理端、APP移动端、可视化数据大屏的智慧工地源码

智慧工地管理平台充分运用数字化技术&#xff0c;聚焦施工现场岗位一线&#xff0c;依托物联网、互联网、AI等技术&#xff0c;围绕施工现场管理的人、机、料、法、环五大维度&#xff0c;以及施工过程管理的进度、质量、安全三大体系为基础应用&#xff0c;实现全面高效的工程…

无人售货奶柜:颠覆传统零售行业的潜力黑马

无人售货奶柜&#xff1a;颠覆传统零售行业的潜力黑马 无人售货奶柜具备体积小、灵活运用空间、无需人工看守和自动结算等特点。相较于传统建店方式&#xff0c;它的成本大大降低&#xff0c;从而提高了运营效率。此外&#xff0c;无人售货奶柜独特的优势之一就是可以保持24小时…