先以chapter4-2-2工程做为基础工程,咱们来进行多环境配置的改造。html
application-dev.properties
:开发环境application-test.properties
:测试环境application-prod.properties
:生产环境application.properties
中添加属性:spring.profiles.active=dev
(默认激活application-dev.properties
配置)application-dev.properties
和application-test.properties
配置文件中添加日志级别定义:logging.level.com.didispace=DEBUG
application-prod.properties
配置文件中添加日志级别定义:logging.level.com.didispace=INFO
经过上面的定义,根据logging.level.com.didispace
在不一样环境的配置文件中定义了不一样的级别,可是咱们已经把日志交给了log4j管理,看看咱们log4j.properties中对com.didispace包下的日志定义是这样的,固定定义了DEBUG级别,并输出到名为didifile定义的appender中。java
# LOG4J配置 log4j.category.com.didispace=DEBUG, didifile # com.didispace下的日志输出 log4j.appender.didifile=org.apache.log4j.DailyRollingFileAppender log4j.appender.didifile.file=logs/my.log log4j.appender.didifile.DatePattern='.'yyyy-MM-dd log4j.appender.didifile.layout=org.apache.log4j.PatternLayout log4j.appender.didifile.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} %5p %c{1}:%L ---- %m%n
那么,要如何动态的改变这个DEBUG级别呢?在《Spring Boot属性配置文件详解》中还提到了关于配置文件中参数的引用。咱们须要将DEBUG替换成application-{profile}.properties
配置文件中定义logging.level.com.didispace
便可,因此配置变为以下内容:git
# LOG4J配置 log4j.category.com.didispace=${logging.level.com.didispace}, didifile # com.didispace下的日志输出 log4j.appender.didifile=org.apache.log4j.DailyRollingFileAppender log4j.appender.didifile.file=logs/my.log log4j.appender.didifile.DatePattern='.'yyyy-MM-dd log4j.appender.didifile.layout=org.apache.log4j.PatternLayout log4j.appender.didifile.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} %5p %c{1}:%L ---- %m%n
到这里咱们已经完成了全部配置工做,咱们能够经过运行单元测试,而后看my.log文件中输出的日志内容。经过修改默认的application-dev.properties
配置的日志级别为INFO,再运行单元测试的DEBUG内容是否被输出到了my.log中验证参数是否被正确引用了。spring
对于不一样环境的使用人员也不须要改变代码或打包文件,只须要经过执行命令中参加参数便可,好比我想采用生产环境的级别,那么我能够这样运行应用:apache
java -jar xxx.jar --spring.profiles.active=prod
源码来源springboot