Spring Cloud Spring Boot mybatis分布式微服务云架构(三十九)对log4j进行多环境不一样日志级别的控制

尝试改造

先以chapter4-2-2工程做为基础工程,咱们来进行多环境配置的改造。html

  • 建立多环境配置文件
    • application-dev.properties:开发环境
    • application-test.properties:测试环境
    • application-prod.properties:生产环境
  • application.properties中添加属性:spring.profiles.active=dev(默认激活application-dev.properties配置)
  • application-dev.propertiesapplication-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

相关文章
相关标签/搜索