不学无数——SpringBoot入门IV
SpringBoot
1.Profiles
Spring Profiles能够在不同的环境中使不同的应用配置生效。@Component和@Configuration两个注解都能够通过@Profiles来标记。下面是例子:
@Configuration @Profile("buxuewushu") public class ProductionConfiguration { // ... }
在配置文件中可以通过spring.profiles.active这个变量来控制哪个Profiles生效。例如,可以在application.properties配置文件中配置如下:
spring.profiles.active=buxuewushu1,buxuewushu --即通过@Profiles注解标记的名为buxuewushu和buxuewushu1的文件生效
当然也可以通过命令行的形式进行配置:--spring.profiles.active= buxuewushu1, buxuewushu
1.1在代码中配置
在启动文件运行之前可以通过SpringApplication设置需要使哪一个配置生效,SpringApplication.setAdditionalProfiles(…),也可以通过Spring的ConfigurableEnvironment接口来配置。
2.日志
SpringBoot使用 Commons Logging作为内部的日志门面,但是也提供了一系列的接口来实现扩展。默认的日志配置有,Java Util Logging,Log4J2和[Logback] (https://commons.apache.org/proper/commons-logging/),在这每一种的实现下,都能通过配置来实现针对于哪一些日志的输出。
2.1日志的格式
SpringBoot默认的日志输出格式如下所示,默认输出级别是INFO。默认使用的是Logback进行记录日志的。
2018-07-20 19:11:40.046 INFO 21758 --- [ main] s.w.s.m.m.a.RequestMappingHandlerAdapter : Looking for @ControllerAdvice: org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@db57326: startup date [Fri Jul 20 19:11:38 CST 2018]; root of context hierarchy 2018-07-20 19:11:40.093 INFO 21758 --- [ main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/]}" onto java.lang.String com.example.FirstSpringBoot.FirstSpringBootApplication.home() 2018-07-20 19:11:40.097 INFO 21758 --- [ main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/error]}" onto public org.springframework.http.ResponseEntity<java.util.Map<java.lang.String, java.lang.Object>> org.springframework.boot.autoconfigure.web.BasicErrorController.error(javax.servlet.http.HttpServletRequest) 2018-07-20 19:11:40.097 INFO 21758 --- [ main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/error],produces=[text/html]}" onto public org.springframework.web.servlet.ModelAndView org.springframework.boot.autoconfigure.web.BasicErrorController.errorHtml(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse)
- 时间:非常精确的时间,并且是根据时间进行排序的输出顺序。
- 日志级别:ERROR,WARN,INFO,DEBUG,TRANCE
- 进程ID
- 通过---进行分割,右边为实际的日志输出内容
- 线程名
- 日志名称:通常是源类的名称
- 日志的内容
2.2调整日志级别
SpringBoot默认的日志级别是INFO,如果想打印其他级别的日志的话可以通过配置。日志级别的顺序是ERROR>WARN>INFO>DEBUG>TRANCE.第一种办法是通过在启动的时候进行参数的配置--debug。
$ java -jar myapp.jar --debug
当然也可以通过配置文件的形式进行调整级别。debug=true,即输出为DEBUG级别的日志信息。
2.3在文件中记录日志
默认情况下,SpringBoot仅仅在控制台中打印日志,不会将日志记录在文件中。如果想将日志输出在文件中的话,那么可以在配置文件中配置文件的路径。logging.file或者logging.path.下面介绍logging.file和logging.path的区别。
logging.file | logging.path | 例子 | 描述 |
---|---|---|---|
none | none | none | 仅仅在控制台中输出日志 |
文件名 | none | buxuewushu.log | 会在项目的根目录下生成一个buxuewushu.log来记录日志 |
none | 文件夹的名字 | ./logs | 会在项目的根目录中生成一个logs文件夹,logs文件下会生成默认的spring.log来记录日志 |
当日志文件记录的数据达到一定量时,SpringBoot会将此文件进行压缩为.gz的压缩文件。SpringBoot默认的大小为10M。当然这个大小也可以通过logging.file.max-size进行配置,但是必须得带单位。
2.4自定义日志配置
许多的日志系统能够被相应的配置文件所配置,或者通过在application.properties中配置Spring的环境变量进行配置logging.config。
可以通过org.springframework.boot.logging.LoggingSystem的系统变量的设置从而使用特定的日志系统,系统日志的value值应该是日志实现的全路径名。
由于日志的加载是在ApplicationContext创建之前的,所以不能通过@PropertySources和@Configuration进行配置。唯一的配置方式就是在系统的环境变量中。
不同的日志系统所对应的配置文件如下:
日志名 | 文件名 |
---|---|
Logback | logback-spring.xml, logback-spring.groovy, logback.xml, or logback.groovy |
Log4j2 | log4j2-spring.xml or log4j2.xml |
JDK (Java Util Logging) | logging.properties |
Java Util Logging在可执行jar包运行时,可能会造成类加载的问题,所以尽可能避免在jar包执行时使用Java Util Logging
为了更好配置化,一些在properties中的配置被转化为了配置在系统中的变量。对应关系如下:
Spring配置变量 | 系统变量 | 描述 |
---|---|---|
logging.exception-conversion-word | LOG_EXCEPTION_CONVERSION_WORD | 记录异常时使用的转换字 |
logging.file | LOG_FILE | 用于默认日志配置在哪个文件中 |
logging.path | LOG_PATH | 用于默认日志配置文件夹下 |
logging.file.max-size | LOG_FILE_MAX_SIZE | 日志文件中支持的最大容量 |
logging.file.max-history | LOG_FILE_MAX_HISTORY | 最大的已经被压缩的文件的数量 |
logging.pattern.console | CONSOLE_LOG_PATTERN | 在控制台上使用的日志模式 |
PID | PID | 当前的进程ID(如果可能,还没有被定义为OS环境变量时发现) |
2.5 Logback的扩展
SpringBoot为Logback的可扩展性提供了许多的帮助。能够在logback-spring.xml文件中进行配置想要扩展的内容。
由于logback.xml文件的加载时间太早了,所以不能将扩展的内容配置在logback.xml中。
通常在开发过程中,我们根据不同的环境进行配置不同的日志级别。所以在配置文件中可以通过<springProfile>标签进行有选择的使具体哪一步分生效。例子如下,在logback-spring.xml进行配置
--想要的配置的具体内容在<springProfile>标签中进行编写 <springProfile name="staging"> <!-- 配置staging生效 --> </springProfile> <springProfile name="dev | staging"> <!-- 配置dev或者staging生效 --> </springProfile> <springProfile name="!production"> <!-- 配置除了production之外的生效 --> </springProfile>
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
剥开比原看代码05:如何从比原节点拿到区块数据?
作者:freewind 比原项目仓库: Github地址:https://github.com/Bytom/bytom Gitee地址:https://gitee.com/BytomBlockchain/bytom 在前一篇中,我们已经知道如何连上一个比原节点的p2p端口,并与对方完成身份验证。此时,双方结点已经建立起来了信任,并且连接也不会断开,下一步,两者就可以继续交换数据了。 那么,我首先想到的就是,如何才能让对方把它已有的区块数据全都发给我呢? 这其实可以分为三个问题: 我需要发给它什么样的数据? 它在内部由是如何应答的呢? 我拿到数据之后,应该怎么处理? 由于这一块的逻辑还是比较复杂的,所以在本篇我们先回答第一个问题: 我们要发送什么样的数据请求,才能让比原节点把它持有的区块数据发给我? 找到发送请求的代码 首先我们先要在代码中定位到,比原到底是在什么时候来向对方节点发送请求的。 在前一篇讲的是如何建立连接并验证身份,那么发出数据请求的操作,一定在上次的代码之后。按照这个思路,我们在SyncManager类中Switch启动之后,找到了一个叫BlockKeeper的类,相关的...
- 下一篇
深入理解SpringBoot的过滤条件--AutoConfigure
我们知道在Spring及SpringBoot里按条件创建Bean的核心是Condition接口与Conditional注解,其实在SpringBoot里还有一种AutoConfigure也可以来过滤配置,只不过使用这种技术,能够让SpringBoot更快速的启动,那么下面我们就来看一下具体怎么实现的。 autoconfigure Module SpringBoot使用一个Annotation的处理器来收集一些自动装配的条件,那么这些条件可以在META-INF/spring-autoconfigure-metadata.properties进行配置。SpringBoot会将收集好的@Configuration进行一次过滤进而剔除不满足条件的配置类。 演示示例 在我们创建好的SpringBoot项目里添加一个AutoConfiguration: package com.ys.zhshop.member.config; import com.ys.zhshop.member.service.MemberRegisterService; import org.springframewo...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
-
Docker使用Oracle官方镜像安装(12C,18C,19C)
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS8编译安装MySQL8.0.19
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS7,8上快速安装Gitea,搭建Git服务器
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
推荐阅读
最新文章
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS6,CentOS7官方镜像安装Oracle11G
- SpringBoot2整合Redis,开启缓存,提高访问速度
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- Hadoop3单机部署,实现最简伪集群
- MySQL8.0.19开启GTID主从同步CentOS8