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 : infologback: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 {@Autowiredprivate DemService service;@Testvoid 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更适合组织和管理复杂的配置项。选择哪种格式应该根据具体的需要和个人习惯来决定。

 

 

 

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

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

相关文章

单片机语音芯片开发要解决的问题

在单片机语音芯片开发过程中&#xff0c;可能会遇到多种问题&#xff0c;这些问题可能来自于技术层面&#xff0c;也可能来自于芯片本身的设计和应用层面。下面让我们具体从芯片的功耗、语音识别的准度、芯片的尺寸和芯片的可靠性四个方面开展讨论。 1.芯片的功耗问题 首先&a…

【AIGC重塑教育】AI大爆发的时代,未来的年轻人怎样获得机会和竞争力?

目录 AI浪潮来袭 AI与教育 AI的优势 延伸阅读 推荐语 ​作者&#xff1a;刘文勇 来源&#xff1a;IT阅读排行榜 本文摘编自《AIGC重塑教育&#xff1a;AI大模型驱动的教育变革与实践》&#xff0c;机械工业出版社出版 AI浪潮来袭 这次&#xff0c;狼真的来了。 AI正迅猛地…

81基于matlab GUI的图像处理

基于matlab GUI的图像处理&#xff0c;功能包括图像颜色处理&#xff08;灰度图像、二值图像、反色变换、直方图、拉伸变换&#xff09;&#xff1b;像素操作&#xff08;读取像素、修改像素&#xff09;、平滑滤波&#xff08;均值平滑、高斯平滑、中值平滑&#xff09;、图像…

Java多线程之线程安全问题

文章目录 一. 线程安全概述1. 什么是线程安全问题2. 一个存在线程安全问题的程序 二. 线程不安全的原因和线程加锁1. 案例分析2. 线程加锁2.1 理解加锁2.2 synchronized的使用2.3 再次分析案例 3. 线程不安全的原因 三. 线程安全的标准类 一. 线程安全概述 1. 什么是线程安全问…

基于C#实现赫夫曼树

赫夫曼树又称最优二叉树&#xff0c;也就是带权路径最短的树&#xff0c;对于赫夫曼树&#xff0c;我想大家对它是非常的熟悉&#xff0c;也知道它的应用场景&#xff0c;但是有没有自己亲手写过&#xff0c;这个我就不清楚了&#xff0c;不管以前写没写&#xff0c;这一篇我们…

【LeetCode刷题笔记】DFSBFS(二)

994. 腐烂的橘子(树/图的BFS问题) 解题思路: 多源BFS ,首选找到 所有的腐烂的橘子 ,放入队列中,然后进行 BFS 广搜,广搜的 层数 - 1 就是所需要花费的分钟数。 在最开始先扫描一遍二维数组,将所有的 腐烂的橘子 加入 队列 ,同时统计新鲜橘子的数量 <

Blender烘焙AO操作及对应的python代码

&#xff08;一&#xff09;Blender软件操作 1. 导入模型&#xff08;这里省略&#xff09; 2. 材质设置 模型使用的所有材质都需要删除Surface Shader&#xff0c;没有其他多余的计算&#xff0c;可以大量缩短烘焙时间。删除之后的只留下一个材质输出节点&#xff0c;如图所…

CentOS Stream 9系统Cgroup问题处理

安装docker容器启动失败 之前适配过Ubuntu系统的容器&#xff0c;由于版本比较高&#xff0c;没有挂载Cgroup的路径。这次使用Centos Stream 9系统安装docker容器时也遇到了这个情况。由于处理方式有些不一样&#xff0c;所以记录一下。 这是docker容器启动过报错的输出日志。…

Windmill:最快的自托管开源工作流引擎

我们对 Windmill 进行了基准测试&#xff0c;认为它是 Airflow、Prefect 甚至 Temporal 中最快的自托管通用工作流引擎。对于 Airflow&#xff0c;有速度快了 10 倍&#xff01; 工作流引擎编排工作人员的有向无环图 (DAG) 中定义的作业&#xff0c;同时尊重依赖性。 主要优点…

Haclon简介及数据类型

Haclon简介 HALCON是由德国MVtec公司开发的机器视觉算法包&#xff0c;它由一千多个各自独立的函数&#xff08;算子&#xff09;构成&#xff0c;其中除了包含各类滤波、色彩以及几何、数学转换、形态学计算分析、图像校正&#xff0c;目标分类辨识、形状搜寻等基本的图像处理…

通配符OV SSL证书都有哪些品牌?

随着数字化时代的到来&#xff0c;网站和在线服务的安全性变得尤为重要。为了保护用户的隐私和数据安全&#xff0c;SSL证书越来越受到重视。OV证书是一种高级别的SSL证书&#xff0c;可以提供更多的验证和保护。而通配符SSL证书则可以保护多个子域名&#xff0c;非常适用于企业…

C/C++文件操作————写文件与读文件以及通讯录的改进 (保姆级教学)

个人主页&#xff1a;点我进入主页 专栏分类&#xff1a;C语言初阶 C语言程序设计————KTV C语言小游戏 C语言进阶 C语言刷题 欢迎大家点赞&#xff0c;评论&#xff0c;收藏。 一起努力&#xff0c;一起奔赴大厂。 目录 1.前言 2.写文件函数与读文件函数 …

多个JDK版本可以吗:JDK17、JDK19、JDK1.8轻松切换(无坑版)小白也可以看懂

多个版本JDK切换 多个JDK&#xff1a;JDK17、JDK19、JDK1.8轻松切换&#xff08;无坑版&#xff09;小白也可以看懂 提示&#xff1a;看了网上很多教程&#xff0c;5w观看、32w观看、几千观看的&#xff0c;多多少少带点坑&#xff0c;这里我就把踩过的坑都给抹了 文章目录 多…

「Verilog学习笔记」不重叠序列检测

专栏前言 本专栏的内容主要是记录本人学习Verilog过程中的一些知识点&#xff0c;刷题网站用的是牛客网 题目要求检测a的序列&#xff0c;a为单bit输入&#xff0c;每个时刻可能具有不同的值&#xff0c; 当连续的六个输入值符合目标序列表示序列匹配&#xff0c;当六个输入值的…

免费接口集合让开发更简单

企业基本信息(含联系方式)&#xff1a;通过公司名称/公司ID/注册号或社会统一信用代码获取企业基本信息和企业联系方式&#xff0c;包括公司名称或ID、类型、成立日期、电话、邮箱、网址等字段的详细信息。企业基本信息&#xff1a;通过公司名称/公司ID/注册号或社会统一信用代…

Redisson分布式锁源码解析、集群环境存在的问题

一、使用Redisson步骤 Redisson各个锁基本所用Redisson各个锁基本所用Redisson各个锁基本所用 二、源码解析 lock锁 1&#xff09; 基本思想&#xff1a; lock有两种方法 一种是空参 另一种是带参 * 空参方法&#xff1a;会默认调用看门狗的过期时间30*1000&…

内网穿透的应用-如何在本地安装Flask,以及将其web界面发布到公网上并进行远程访问

轻量级web开发框架&#xff1a;Flask本地部署及实现公网访问界面 文章目录 轻量级web开发框架&#xff1a;Flask本地部署及实现公网访问界面前言1. 安装部署Flask2. 安装Cpolar内网穿透3. 配置Flask的web界面公网访问地址4. 公网远程访问Flask的web界面 前言 本篇文章讲解如何…

linux环境下samba服务器的配置

linux服务器怎么创建用户 在Linux服务器上&#xff0c;可以使用以下步骤创建用户&#xff1a; 使用adduser命令创建新用户&#xff1a; sudo adduser username将 username 替换为你要创建的用户名。这个命令会提示你输入新用户的密码以及其他相关信息。 如果需要为新用户设…

qml PathPercent使用介绍

PathPercent 是一个QML类型,它表示 Path 上的一个百分比位置。这个类型通常在 PathAnimation 或 PathInterpolator 中使用,以便在路径上产生一个特定的位置。它提供了一种方式来表示在 Path 元素上的某个点。通过 PathPercent,你可以指定一个百分比,来表示沿着路径的位置,…