• SpringBoot:ch02 配置文件(日志)


    前言

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

    一、前期准备

    1、新建项目,结构如下

    2、添加依赖
    1. "1.0" encoding="UTF-8"?>
    2. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    3. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    4. <modelVersion>4.0.0modelVersion>
    5. <parent>
    6. <groupId>org.springframework.bootgroupId>
    7. <artifactId>spring-boot-starter-parentartifactId>
    8. <version>2.7.17version>
    9. <relativePath/>
    10. parent>
    11. <groupId>edu.nfgroupId>
    12. <artifactId>ch02artifactId>
    13. <version>0.0.1-SNAPSHOTversion>
    14. <name>ch02name>
    15. <description>ch02description>
    16. <properties>
    17. <java.version>11java.version>
    18. properties>
    19. <dependencies>
    20. <dependency>
    21. <groupId>org.springframework.bootgroupId>
    22. <artifactId>spring-boot-starterartifactId>
    23. dependency>
    24. <dependency>
    25. <groupId>org.springframework.bootgroupId>
    26. <artifactId>spring-boot-starter-testartifactId>
    27. <scope>testscope>
    28. dependency>
    29. dependencies>
    30. <build>
    31. <plugins>
    32. <plugin>
    33. <groupId>org.springframework.bootgroupId>
    34. <artifactId>spring-boot-maven-pluginartifactId>
    35. <configuration>
    36. <image>
    37. <builder>paketobuildpacks/builder-jammy-base:latestbuilder>
    38. image>
    39. configuration>
    40. plugin>
    41. plugins>
    42. build>
    43. 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 类
    1. @Service
    2. public class DemService {
    3. private final static Logger log = LoggerFactory.getLogger(DemService.class);
    4. public void add(){
    5. log.info("日志记录...");
    6. }
    7. }

    这是一个简单的 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

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

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

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

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

    四、测试类

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

    1. @SpringBootTest
    2. class Ch02ApplicationTests {
    3. @Autowired
    4. private DemService service;
    5. @Test
    6. void contextLoads() {
    7. service.add();
    8. }
    9. }

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

    运行结果:

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

    日志文件的内容如下:

    1. 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)
    2. 2023-11-21 15:22:29 [main] INFO org.springframework.boot.SpringApplication - No active profile set, falling back to 1 default profile: "default"
    3. 2023-11-21 15:22:29 [main] INFO org.springframework.boot.StartupInfoLogger - Started Ch02ApplicationTests in 1.248 seconds (JVM running for 2.71)
    4. 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更适合组织和管理复杂的配置项。选择哪种格式应该根据具体的需要和个人习惯来决定。

     

     

     

  • 相关阅读:
    02 - 雷达探测能力——基本雷达方程
    php接口api数据签名及验签
    C++ map clear内存泄漏问题
    HTML5 新增表单标签
    Java-面向对象
    消息中间件-RocketMQ(基础、实战、源码、原理看这一篇就够了)
    Springboot美国职业篮球联赛信息平台58sh4计算机毕业设计-课程设计-期末作业-毕设程序代做
    TrendMicro:Apex One Server 工具文件夹
    java计算机毕业设计校园共享单车系统源程序+mysql+系统+lw文档+远程调试
    Minio分布式存储系统
  • 原文地址:https://blog.csdn.net/zhiqiuqiu2/article/details/134532758