纷杂的Spring-boot-starter: 1 应用 日志 和 spring- boot- starter- logging

我认为,SpringBoot微服务框架从两个主要层面影响Spring社区的开发者们:

  1. 基于Spring框架的“约定优先于配置(COC)”理念以及最佳实践之路
  2. 提供了针对日常企业应用研发各种场景的spring-boot-starter自动配置依赖模块,如此多“开箱即用”的依赖模块,使得开发各种场景的Spring应用更加快速和高效。

SpringBoot提供的这些“开箱即用”的依赖模块都约定以spring-boot-starter-作为命名前缀,并且皆位于org.springframework.boot包或者命名空间下(虽然SpringBoot的官方文档中提到不建议大家使用spring-boot-starter-来命名自己写的类似的自动配置依赖模块,但实际上,配合不同的groupId,这应该是不是什么问题)

如果我们访问spring,并单击图中的“Switch to the full version”链接,就会发现SpringBoot1.3.1默认支持和提供了大约80多个自动配置依赖模块。
在这里插入图片描述
鉴于数量如此之多,并且也不是所有人都会在任何一个应用中应用到所有,就几个常见的通用spring-boot-starter模块进行说下,希望童鞋可以举一反三,灵活应用所有日后工作过程中将会用到的那些spring-boot-starter模块。

所以的spring-boot-starte都有约定俗称的默认配置,但允许我们调整这些配置以改变默认配置行为,即“约定优于配置”。在介绍相应spring-boot-starter的默认配置(约定)以及可调整配置之前,我们哟必要对springBoot应用的配置约定先做一个简单的介绍。

简单来讲,我们可以将对SpringBoot的行为可以进行干预的配置方式划分为几类:

  • 命令行参数(Command Line Args)
  • 系统环境变量(Environment Variables)
  • 位于文件系统中的配置文件
  • 位于classpath中的配置文件
  • 固化到代码中的配置项

为了简化,其它比较少见场景的配置方式不再罗列。总的来说,以上几种方式按照优先级从高到低排列,高优先级方式提供的配置项可以覆盖或者优先生效,比如通过命令行参数传入的配置项会覆盖通过环境变量传入的同一配置项,当然也会覆盖其它后面几种方式给出的同一配置项。

不管是位于文件系统还是classpath,springboot应用默认的配置文件名叫作application.properties,可以直接放在当前项目的跟目录或者名称为config的子目录下。

以上是关于springBoot应用配置方式的简单介绍,基本可以满足我们后面讲解的需要,所以,现在让我们进入纷杂的spring-boot-starter探索之旅吧!

应用日志和spring-boot-starter-logging

Java的日志系统多种多样,从java.util默认提供的日志支持,到log4j,log4j2,commons-logging等,复杂繁多,所以,应用日志系统的配置就会比较特殊,从而spring-boot-starter-logging也比较特殊一些,下面将其作为我们第一个了解的自动配置依赖模块。

假如maven依赖中添加了spring-boot-starter-logging:

< dependency> 
	< groupId> org. springframework. boot</ groupId> 
	< artifactId> spring- boot- starter- logging</ artifactId> 
</ dependency>

那么,我们的SpringBoot应用将自动使用logback作为应用日志框架,SpringBoot启动的时候,由org.springframework.boot.loggging.Logging-Application-Listener根据情况初始化并使用。

Springboot为我们提供了很多默认的日志配置,所以,只要将spring-boot-starter-logging作为依赖加入到当前应用的classpath,则“开箱即用”,不需要做任何多余的配置,但假设我们要对默认SpringBoot提供的应用日志设定做调整,则可以通过几种方式进行配置调整:

  • 遵循logback的约定,在classpatch中使用自己定制的logback.xml配置文件

  • 在文件系统中任何一个位置提供自己的logback.xml配置文件,然后通过logging.config配置项指向这个配置文件来启用它,比如在application.properties中指定如下配置:

    logging. config=/{ some. path. you. defined}/ any- logfile- name- I- like. log
    

注意 SpringBoot默认允许我们通过配置文件或者命令行等方式使用logging.file和logging.path来自定义日志文件的名称和存放路径,不过,这只是允许我们在SpringBoot框架预先定义的默认日志系统设定的基础上做有限的设置,如果我们希望更灵活的配置,最好通过框架特定的配置方式提供相应的配置文件,然后通过logging.config来启用

如果更习惯使用log4j或者log4j2,那么也可以采用类似的方式将它们对应的spring-boot-starter依赖模块加到maven依赖项中即可:

<dependency> 
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-log4j</artifactId>
</dependency> 

或者

<dependency> 
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-log4j2</artifactId>
</dependency> 

但一定不要将这些完成同一目的的spring-boot-starter都加到依赖中

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值