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
属性遵循与其他属性相同的排序规则:详细规则参见。
这意味着可以在application.properties中指定活动配置文件,然后使用命令行开关替换它们。
spring.profiles.include
属性可用于无条件添加活动配置文件。
SpringApplication
入口点还存在设置配置文件的Java API(java代码设置 spring.profiles.active
属性即可)。
例如,当使用开关运行具有以下属性的应用程序时--spring.profiles.active=prod
,也会激活proddb
和prodmq
配置文件:
---
my.property: fromyamlfile
---
spring.profiles: prod
spring.profiles.include:
- proddb
- prodmq
1.2以编程方式设置配置文件
您可以SpringApplication.setAdditionalProfiles(…)
在应用程序运行之前通过调用以编程方式设置活动配置文件。。
2.日志
Spring Boot使用Commons Logging进行所有内部日志记录,但保留底层日志实现。
为Java Util Logging,Log4J2和 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 System | Customization |
Logback |
|
Log4j2 |
|
JDK (Java Util Logging) |
|
如果可能,我们建议您使用-spring
变量进行日志记录配置(例如,logback-spring.xml
而不是logback.xml
)。如果使用标准配置名称,Spring无法完全控制日志初始化。(可能会被logback本身先加载,脱离了spring的控制)
2.4Logback 扩展
Spring Boot包含许多Logback扩展,可以帮助进行高级配置。您可以在logback-spring.xml
配置文件中使用这些扩展。
由于标准 |
扩展方式不能与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>