Spring 启动 2:在自定义启动器中设置日志级别?

Spring Boot 2: set loglevel in custom starter?

是否可以将日志级别设置为自定义启动器配置的一部分?

比方说,我已经创建了一个扩展默认 spring-boot-starter-data-jpa 的自定义启动器。是否可以将 org.hibernate 的日志级别设置为 WARN 作为启动器的一部分,以便每个使用我的自定义启动器的应用程序自动继承它,而不必从 INFO 切换到 WARN 在他们自己的属性文件中?

非常感谢!

我建议通过向包含 logging.level.org.hibernate 属性 设置为 WARN.

的环境添加 属性 源来执行此操作

为此,您可以使用 META-INF/spring.factories 注册 EnvironmentPostProcessor 的实现。 spring.factories 文件是一个属性文件。键是已实现接口的完全限定 class 名称。在这种情况下,它是 org.springframework.boot.env.EnvironmentPostProcessor 并且该值应该是您的实现的完全限定名称。内容大概是这样的:

org.springframework.boot.env.EnvironmentPostProcessor=com.example.HibernateLoggingEnvironmentPostProcessor

在您的 EnvironmentPostProcessor 实施中,您应该将 PropertySource 添加到 Environment。该 属性 来源应包含一个 logging.level.org.hibernate 属性,其值为 WARN。例如,您可以使用通过 Collections.singletonMap.

创建的 MapPropertySource