SpringBoot:ch02 配置文件(日志)

前言

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

一、前期准备

1、新建项目,结构如下

SpringBoot:ch02 配置文件(日志)_第1张图片

2、添加依赖


    4.0.0
    
        org.springframework.boot
        spring-boot-starter-parent
        2.7.17
         
    
    edu.nf
    ch02
    0.0.1-SNAPSHOT
    ch02
    ch02
    
        11
    
    
        
            org.springframework.boot
            spring-boot-starter
        

        
            org.springframework.boot
            spring-boot-starter-test
            test
        
    

    
        
            
                org.springframework.boot
                spring-boot-maven-plugin
                
                    
                        paketobuildpacks/builder-jammy-base:latest
                    
                
            
        
    


这是一个 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 注入进来,调用其的方法,运行即可。

运行结果:

SpringBoot:ch02 配置文件(日志)_第2张图片

当运行结束后,会生成一个 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更适合组织和管理复杂的配置项。选择哪种格式应该根据具体的需要和个人习惯来决定。

 

 

 

你可能感兴趣的:(springboot,spring,boot,后端,java,logback)