在上一章节中我们介绍了,仅通过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
通过上面的定义,根据logging.level.com.kfit
在不同环境的配置文件中定义了不同的级别,但是我们已经把日志交给了log4j管理,看看我们log4j-spring.properties中对com.kfit包下的日志定义是这样的,固定定义了DEBUG级别,并输出到名为didifile定义的appender中。
# LOG4J配置
log4j.rootCategory=INFO, stdout, file, errorfile
# com.kfit包下的日志配置
log4j.category.com.kfit=DEBUG,didifile
# com.kfit下的日志输出
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.kfit
即可,所以配置变为如下内容:
# com.kfit包下的日志配置
log4j.category.com.kfit=${logging.level.com.kfit},didifile
到这里我们已经完成了所有配置工作,我们可以通过运行单元测试,然后看my.log文件中输出的日志内容。通过修改默认的application-dev.properties
配置的日志级别为INFO,再运行单元测试的DEBUG内容是否被输出到了my.log中验证参数是否被正确引用了。
对于不同环境的使用人员也不需要改变代码或打包文件,只需要通过执行命令中参加参数即可,比如我想采用生产环境的级别,那么我可以这样运行应用:
java -jar xxx.jar --spring.profiles.active=prod
这里有一个坑,一不小都会掉进去的,我们在java Run configurations配置的启动参数在单元测试中是无效的,这个是一个很深的陷阱,呼一声就掉进去了,反正我是进去了,然后我发现不管我这么改,都是激活了dev,最后经过不断的寻找资料才知道,如果想在单元测试中激活profiles的话,那么是需要进行配置的,怎么做呢,在单元测试类中添加如下注解即可:
@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(App.class)
/*
* @ActiveProfiles,可以指定一个或者多个 profile,
* 这样我们的测试类就仅仅加载这些名字的 profile 中定义的 bean 实例。
* 这里激活application-prod.properties配置文件.
*/
@ActiveProfiles("prod")
public class AppTest
【Spring Boot 系列博客】
à悟空学院:https://t.cn/Rg3fKJD
学院中有Spring Boot相关的课程!点击「阅读原文」进行查看!
SpringBoot视频:http://t.cn/A6ZagYTi
Spring Cloud视频:http://t.cn/A6ZagxSR
SpringBoot Shiro视频:http://t.cn/A6Zag7IV
SpringBoot交流平台:https://t.cn/R3QDhU0
SpringData和JPA视频:http://t.cn/A6Zad1OH
SpringSecurity5.0视频:http://t.cn/A6ZadMBe
Sharding-JDBC分库分表实战:http://t.cn/A6ZarrqS
分布式事务解决方案「手写代码」:http://t.cn/A6ZaBnIr
网易云课堂视频最新更新:
第十一章 Spring Boot 日志
1、spring boot日志—理论
2、Spring Boot日志-logback
3、Spring Boot日志-log4j2
第十二章 Spring Boot 知识点2
1、spring boot 服务配置和部署
2、Spring Boot 定制URL匹配规则
历史章节:
第一章 快速开始
1、Spring Boot之Hello World
2、Spring Boot之Hello World访问404
第二章 Spring Boot之JSON
1、spring boot返回json数据
2、Spring Boot完美使用FastJson解析JSON数据
第三章 Spring Boot热部署
1、Spring Boot热部署(springloader)
2、springboot + devtools(热部署)
第四章 Spring Boot数据库
1、Spring Boot JPA/Hibernate/Spring Data概念
2、Spring Boot JPA-Hibernate
3、Spring Boot Spring Data JPA介绍
4、Spring Boot JdbcTemplate
5、Spring Boot集成MyBatis
第五章 web开发
1、全局异常捕捉
2、配置server信息
3、spring boot使用thymeleaf
4、Spring Boot 使用freemarker
5、Spring Boot添加JSP支持
第六章 定时任务
1、Spring Boot定时任务
2、Spring Boot 定时任务升级篇(动态修改cron参数)
3、Spring Boot 定时任务升级篇(动态添加修改删除定时任务)
4、Spring Boot 定时任务升级篇(集群/分布式下的定时任务说明)
5、Spring Boot Quartz介绍
6、Spring Boot Quartz在Java Project中使用
7、Spring Boot 集成Quartz普通使用
8、Spring Boot 集成Quartz升级版
9、Spring Boot 集成Quartz二次升级版
10、Spring Boot 集成Quartz-Job如何自动注入Spring容器托管的对象
第七章 Spring Boot MyBatis升级篇
1、Spring Boot MyBatis升级篇-注解
2、Spring Boot MyBatis升级篇-注解-自增ID
3、Spring Boot MyBatis升级篇-注解-增删改查
4、Spring Boot MyBatis升级篇-注解-分页查询
5、Spring Boot MyBatis升级篇-注解-分页PageHelper不生效
6、Spring Boot MyBatis升级篇-注解- mybatic insert异常:BindingException: Parameter 'name' not found
7、Spring Boot MyBatis升级篇-注解- #和$符号特别篇
8、Spring Boot MyBatis升级篇-注解-@Result
9、Spring Boot MyBatis升级篇-注解-动态SQL(if test)-方案一:<script>
10、Spring Boot MyBatis升级篇-注解-动态SQL(if test)-方案二:@Provider
11、Spring Boot MyBatis升级篇-注解-动态SQL-参数问题
12、Spring Boot MyBatis升级篇-注解-特别篇:@MapperScan和@Mapper
13、Spring Boot MyBatis升级篇-XML
14、Spring Boot MyBatis升级篇-XML-自增ID
15、Spring Boot MyBatis升级篇-XML-增删改查
16、Spring Boot MyBatis升级篇-XML-分页查询
17、Spring Boot MyBatis升级篇-XML-分页PageHelper不生效
18、Spring Boot MyBatis升级篇-XML-动态SQL(if test)
19、Spring Boot MyBatis升级篇-XML-注解-初尝试
20、Spring Boot MyBatis升级篇- pagehelper替换为pagehelper-spring-boot-starter
第八章 Spring Boot 知识点1
1、Spring Boot 拦截器HandlerInterceptor
2、Spring Boot启动加载数据CommandLineRunner
3、Spring Boot环境变量读取和属性对象的绑定
4、Spring Boot使用自定义的properties
5、Spring Boot使用自定义的properties
6、Spring Boot使用@SpringBootApplication
7、Spring Boot 监控和管理生产环境
第十章 Spring Boot 打包部署
1、Spring Boot打包部署((提供Linux的sh文件))
第十一章 Spring Boot 日志
1、spring boot日志—理论
2、Spring Boot日志-logback
3、Spring Boot日志-log4j2
更多查看博客: http://412887952-qq-com.iteye.com/
相关推荐
《从零开始学Spring Boot》是一本由林祥纤编著的书籍,旨在帮助初学者系统地学习和掌握Spring Boot框架。Spring Boot是Java开发领域的一款流行框架,它简化了Spring应用的初始设置和配置,使得开发者能够快速构建可...
在本篇【从零开始学Spring Boot】系列中,我们将探讨如何在Spring Boot项目中使用Druid数据源进行编程注入。Druid是一个优秀的数据库连接池,它提供了强大的监控和扩展功能,是许多企业级应用首选的数据源解决方案。...
6. 日志记录:配置Logback或Log4j2进行日志管理和输出。 7. 身份验证与令牌管理:实现OAuth2或JWT(JSON Web Tokens)的身份验证机制。 通过阅读这本书和实践源码,开发者不仅能了解Spring Boot的基本用法,还能...
Spring Boot 支持多种日志框架,如 Logback、Log4j 等。 在日志处理中,我们可以使用 @Slf4j 注解来标注日志类,并使用 logger 对象来记录日志信息。同时,我们也可以使用日志配置文件来配置日志的输出格式和级别...
1. 创建第一个 Spring Boot 项目:从零开始创建一个简单的 "Hello, World!" 应用,理解 Maven 或 Gradle 项目的结构。 2. 使用 Spring Boot 的自动配置:探究如何利用自动配置来简化配置文件。 3. 开发 RESTful API...
日志管理也是Spring Boot关注的重点,它默认集成了Logback或Log4j2,提供灵活的日志记录和配置。此外,Spring Boot还有强大的健康检查和监控功能,通过Actuator端点,可以查看应用的运行状态、内存使用情况、环境...
2. 引入最佳实践:模板可能包含了日志处理、错误处理、安全性、缓存管理等方面的最佳实践,避免了从零开始设计这些常见功能。 3. 数据访问:Spring Boot支持多种数据库,包括JDBC、JPA、Hibernate等,通用模板可能...
12. **日志**:Spring Boot默认使用Logback或Log4j2进行日志记录,并提供了简单的日志级别配置。 以上就是关于Spring Boot的一些核心知识点,也是“干净可用spring-boot的项目”可能包含的内容。在实际使用时,...
- 配置日志框架,如Logback或Log4j,调整日志级别和输出格式。 16. **持续集成与部署**: - 配置CI/CD工具,如Jenkins、GitLab CI/CD,实现自动化构建和部署。 17. **文档编写**: - 使用Swagger UI生成API文档...
通过"base.spring.boot-master"这个项目,你可以深入学习如何从零开始构建一个完整的Spring Boot应用,包括项目结构、配置文件、控制器、服务层、数据库集成、单元测试等多个方面。实践是检验真理的唯一标准,动手...
根据提供的文件信息,我们可以梳理出一系列与Spring Boot相关的知识点,这些知识点主要涵盖了Spring Boot的基础...通过学习这些知识点,开发者可以从零开始逐步掌握Spring Boot的使用方法,并将其应用于实际项目中。
- 日志管理:Spring Boot默认集成了Logback或Log4j2,可以轻松定制日志级别和输出格式。 以上就是从零开始搭建Spring Boot工程的基本步骤。随着你对Spring Boot的理解加深,可以尝试更多高级特性和集成其他服务,...
本文旨在从零开始搭建一个Spring Boot项目框架(脚手架),并在此基础上增加一系列通用功能以提高开发效率及代码复用性。通过集成Spring MVC,并对其进行一定程度的定制化处理,以满足日常软件开发中的常见需求。...
通过对这些文件的理解,我们可以推断这个项目提供了从零开始集成Redis到Spring Boot应用的完整示例,包括配置、代码实现和测试。学习这个示例可以帮助开发者更好地理解如何在实际项目中使用Spring Boot和Redis,提升...
总的来说,"spring-boot-hello-world"项目为我们提供了一个简洁明了的Spring Boot应用实例,展示了从零开始创建一个简单Web应用的过程。通过这个项目,你可以学习到Spring Boot的基本架构、配置方式以及如何编写控制...
通过本教程的学习,读者可以了解如何从零开始搭建一个完整的项目结构,包括数据库设计、项目构建、框架配置等各个环节。 #### 二、环境准备与配置 ##### 1. 数据库设计与创建 在搭建开发环境之前,首先需要创建...
例如,使用Spring的`@ControllerAdvice`进行全局异常处理,以及集成Log4j或Logback进行日志记录。 8. **单元测试与集成测试**: 使用JUnit和Mockito等工具进行单元测试,验证单个组件的功能;使用Spring Boot的...
在本文中,我们将深入探讨如何从零开始搭建一个基于Spring Boot的后台框架。Spring Boot是Java领域中的一个流行框架,它极大地简化了Spring应用程序的初始设置和配置,使得开发过程更加高效。首先,我们需要了解搭建...
以下是一份详细的步骤指南,帮助你从零开始构建这样的项目。 1. **环境配置**: - **Java环境**:首先确保安装了Java JDK,并设置好`JAVA_HOME`环境变量。 - **IDEA**:下载并安装IntelliJ IDEA社区版或专业版,...
通过以上步骤,你可以从零开始构建并整合 Logback 到 Spring Boot 应用中,体验其强大的日志管理能力。不断练习和调整配置,你将更熟练地掌握日志系统的使用,从而提高开发效率和问题排查能力。