springboot profile 日志配置

Posted gc65

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了springboot profile 日志配置相关的知识,希望对你有一定的参考价值。

1.简介

Spring Profiles提供了一种隔离应用程序配置部分并使其仅在特定环境中可用的方法。

任何@Component@Configuration 可以标记@Profile以限制何时加载,如以下示例所示:(只有在profile设置为procduction的时候这个bean才会被加载)

@Configuration
@Profile("production")
public class ProductionConfiguration {

    // ...

}

可以使用spring.profiles.active Environment属性指定哪些配置文件处于活动状态。可以使用前面介绍的任何方法指定属性(配置文件,启动参数,环境变量等)。

例如,您可以将其包含在您的中application.properties,如以下示例所示:

spring.profiles.active=production,prod

还可以使用以下开关在命令行上指定它:

spring.profiles.active=production,prod

1.1添加活动配置文件

spring.profiles.active属性遵循与其他属性相同的排序规则:详细规则参见https://www.cnblogs.com/gc65/p/10624629.html

这意味着可以在application.properties中指定活动配置文件,然后使用命令行开关替换它们。

spring.profiles.include属性可用于无条件添加活动配置文件。

SpringApplication入口点还存在设置配置文件的Java API(java代码设置 spring.profiles.active属性即可)。

例如,当使用开关运行具有以下属性的应用程序时--spring.profiles.active=prod也会激活proddbprodmq配置文件:

---
my.property: fromyamlfile
---
spring.profiles: prod
spring.profiles.include:
  - proddb
  - prodmq

1.2以编程方式设置配置文件

您可以SpringApplication.setAdditionalProfiles(…?)在应用程序运行之前通过调用以编程方式设置活动配置文件。

2.日志

Spring Boot使用Commons Logging进行所有内部日志记录,但保留底层日志实现。

Java Util LoggingLog4J2和 Logback提供了默认配置 

在每种情况下,记录器都预先配置为使用控制台输出,并且还提供可选的文件输出。

2.1修改日志级别

1.java -jar myapp.jar --debug
2.在application.properties中指定debug=true (表示日志级别开到debug等级)

可以细化各模块打印日志的级别

logging.level.root=WARN
logging.level.org.springframework.web=DEBUG
logging.level.org.hibernate=ERROR

2.2日志组

日志组能把相关的logger组合到一起。例如,您通常可以更改所有 Tomcat相关logger的日志记录级别 ,但您无法轻松记住顶级软件包。

为了解决这个问题,Spring Boot允许您在Spring中定义日志记录组 Environment

例如,以下是如何通过将“Tomcat”组添加到您的application.properties

logging.group.tomcat=org.apache.catalina, org.apache.coyote, org.apache.tomcat

下面给这个组设置日志级别(相当于给上面三个package指定日志级别)

logging.level.tomcat=TRACE

2.3自定义日志配置

可以通过在配置文件application.properties文件中logging.config

由于logging是在applicationContext创建之前初始化,不可能通过使用@PropertySources指定使用哪个日志配置文件。

依据当前环境中的日志系统,默认加载下面类型的文件作为日志配置:

Logging SystemCustomization

Logback

logback-spring.xmllogback-spring.groovylogback.xml, or logback.groovy

Log4j2

log4j2-spring.xml or log4j2.xml

JDK (Java Util Logging)

logging.properties

 

 

 

 

如果可能,我们建议您使用-spring变量进行日志记录配置(例如,logback-spring.xml而不是logback.xml)。如果使用标准配置名称,Spring无法完全控制日志初始化。(可能会被logback本身先加载,脱离了spring的控制)

2.4Logback 扩展

Spring Boot包含许多Logback扩展,可以帮助进行高级配置。您可以在logback-spring.xml配置文件中使用这些扩展

技术图片

由于标准logback.xml配置文件加载过早,因此无法在其中使用扩展。您需要使用logback-spring.xml或定义 logging.config属性。

 

 

技术图片

扩展方式不能与Logback的 配置扫描一起使用如果您尝试这样做,更改配置文件会导致错误。

 

 

2.4.1特定于配置文件的配置

<springProfile>标签可以指定在不同的profile下使用不同的logback配置

<springProfile name="staging">
    <!-- configuration to be enabled when the "staging" profile is active -->
</springProfile>

<springProfile name="dev | staging">
    <!-- configuration to be enabled when the "dev" or "staging" profiles are active -->
</springProfile>

<springProfile name="!production">
    <!-- configuration to be enabled when the "production" profile is not active -->
</springProfile>

 

以上是关于springboot profile 日志配置的主要内容,如果未能解决你的问题,请参考以下文章

springboot 多环境配置和切换

springboot不同环境打包

springboot配置全系列

SpringBoot

SpringBoot - Spring Boot 中的配置体系Profile全面解读

传统SpringMVC到Springboot迁移之路