spring boot log4j多环境不同日志级别控制
2017-09-26 08:59
489 查看
在上一章节中我们介绍了,仅通过log4j-spring.properties对日志级别进行控制,对于需要多环境部署的环境不是很方便,可能我们在开发环境大部分模块需要采用DEBUG级别,在测试环境可能需要小部分采用DEBUG级别,而在生产环境时我们又希望采用INFO级别。这个时候,我们要自己手工编辑log4j-spring.properties文件来调整日志级别,不论在版本库中默认保存哪个环境的级别设定,都会增加其他环境使用人员的工作量,虽然很细微,但是手工修改总不是一件很好的选择,难免会发现修改后误提交等问题。
那么,有没有办法对于开发人员、运维人员都不需要改变源代码实现不同环境的不同日志级别呢?
这时候Spring Boot多环境的配置以及属性文件中的参数引用这个技术就很重要了(可以参考上一篇文章)
创建多环境配置文件
application-dev.properties:开发环境
application-test.properties:测试环境
application-prod.properties:生产环境
在resources下创建以上3个文件。application.properties中添加属性:
spring.profiles.active=dev(默认激活application-dev.properties配置)
application-dev.properties和application-test.properties配置文件中添加日志级别定义:logging.level.com.kfit=info
application-prod.properties配置文件中添加日志级别定义:logging.level.com.kfit=ERROR
那么,要如何动态的改变这个DEBUG级别呢?在上一章节中还提到了关于配置文件中参数的引用。我们需要将DEBUG替换成application-{profile}.properties配置文件中定义logging.level.com.kfit即可,所以配置变为如下内容:
通过上面的定义,根据logging.level.com.kfit在不同环境的配置文件中定义了不同的级别,但是我们已经把日志交给了log4j管理,看看我们log4j-spring.properties中对com.kfit包下的日志定义是这样的,固定定义了DEBUG级别,并输出到名为didifile定义的appender中。
到这里我们已经完成了所有配置工作,我们可以通过运行单元测试,然后看my.log文件中输出的日志内容。通过修改默认的application-dev.properties配置的日志级别为INFO,再运行单元测试的DEBUG内容是否被输出到了my.log中验证参数是否被正确引用了。
对于不同环境的使用人员也不需要改变代码或打包文件,只需要通过执行命令中参加参数即可,比如我想采用生产环境的级别,那么我可以这样运行应用:
这里有一个坑,一不小都会掉进去的,我们在java Run configurations配置的启动参数在单元测试中是无效的,这个是一个很深的陷阱,呼一声就掉进去了,反正我是进去了,然后我发现不管我这么改,都是激活了dev,最后经过不断的寻找资料才知道,如果想在单元测试中激活profiles的话,那么是需要进行配置的,怎么做呢,在单元测试类中添加如下注解即可:
那么,有没有办法对于开发人员、运维人员都不需要改变源代码实现不同环境的不同日志级别呢?
这时候Spring Boot多环境的配置以及属性文件中的参数引用这个技术就很重要了(可以参考上一篇文章)
创建多环境配置文件
application-dev.properties:开发环境
application-test.properties:测试环境
application-prod.properties:生产环境
在resources下创建以上3个文件。application.properties中添加属性:
spring.profiles.active=dev(默认激活application-dev.properties配置)
application-dev.properties和application-test.properties配置文件中添加日志级别定义:logging.level.com.kfit=info
application-prod.properties配置文件中添加日志级别定义:logging.level.com.kfit=ERROR
通过上面的定义,根据logging.level.com.kfit在不同环境的配置文件中定义了不同的级别,但是我们已经把日志交给了log4j管理,看看我们log4j-spring.properties中对com.kfit包下的日志定义是这样的,固定定义了DEBUG级别,并输出到名为didifile定义的appender中。
对于不同环境的使用人员也不需要改变代码或打包文件,只需要通过执行命令中参加参数即可,比如我想采用生产环境的级别,那么我可以这样运行应用:
相关文章推荐
- 52. spring boot日志升级篇—log4j多环境不同日志级别的控制【从零开始学Spring Boot】
- Spring Boot中对log4j进行多环境不同日志级别的控制
- Spring Boot中对log4j进行多环境不同日志级别的控制
- 52. spring boot日志升级篇—log4j多环境不同日志级别的控制【从零开始学Spring Boot】
- 52. spring boot日志升级篇—log4j多环境不同日志级别的控制【从零开始学Spring Boot】(
- Spring Boot教程(五)对log4j进行多环境不同日志级别的控制
- Spring Cloud Spring Boot mybatis分布式微服务云架构(三十九)对log4j进行多环境不同日志级别的控制
- Spring Boot中对log4j进行多环境不同日志级别的控制
- 52. spring boot日志升级篇—log4j多环境不同日志级别的控制【从零开始学Spring Boot】
- Spring Boot log4j多环境日志级别的控制
- (转)log4j(三)——如何控制不同级别的日志信息的输出?
- log4j(三)——如何控制不同级别的日志信息的输出?
- spring boot默认日志配置,以及改用log4j日志配置
- 使用Log4J来作为Spring Boot的日志系统
- Spring boot中使用log4j记录日志
- SpringBoot学习(三)--Spring profile多环境方式实现logback日志配置
- spring boot 日志配置 log4j
- Log4j按级别输出日志到不同的文件
- Spring Boot log4j实现把日志存入mongodb
- SpringBoot 使用logback日志分级别生成文件