spring boot 2.0特性之profile与日志

profile

简介

profile提供了应用的隔离,使其在某种特定的环境下才能生效,任何的@Component与@Configuration能够被@Profile标记限制其何时加载,如下代码所示:

@Configuration
@Profile("production")
public class ProductionConfiguration {

	// ...

}

通常情况下,spring可以使用spring.profiles.active Environment 去指定哪一个profile被激活。通常可以通过指定包含在apllication.properties配置中指定:代码如下:

pring.profiles.active=dev,hsqldb

也可以通过命令行的形式:--spring.profiles.active=dev,hsqldb

添加激活配置(active profiles)

spring.profiles.active 属性像其他属性一样,也提供了对应的优先级的顺序,优先级最高的获胜,可以通过在application.properties指定,然后在命名行替换。

有时候,通过添加active profile而不是替换他们更加有用。可以通过变量spring.profiles.include进行无条件的添加激活的变量。其对应的API也有添加对应的API的方式,查看setAdditionalProfiles() 方法。例如:当使用如下配置的时候:

---
my.property: fromyamlfile
---
spring.profiles: prod
spring.profiles.include:
  - proddb
  - prodmq

当使用--spring.profiles.active=prod进行激活的时候,proddb 与 prodmq 也将会被激活。

程序化设置

可以通过SpringApplication.setAdditionalProfiles(…​)方法在程序运行前进行设置

具体化配置文件

可以通过@ConfigurationProperties具体化其配置变量

日志

简介

spring boot内部使用的使 Commons Logging日志,但是其可以留下了潜在日志接口的实现。默认的配置包括 Java Util LoggingLog4J2,与Logback,每一种情况下,都会被配置输出到控制台和可选的输入到文件。

默认情况下,如果使用“starter”,Logback 日志框架被使用,其他的相关的包也会包括,保证Java Util Logging, Commons Logging, Log4J, or SLF4J也能正常工作。

日志格式

默认的日志输出格式如下:

2014-03-05 10:57:51.112  INFO 45469 --- [           main] org.apache.catalina.core.StandardEngine  : Starting Servlet Engine: Apache Tomcat/7.0.52
2014-03-05 10:57:51.253  INFO 45469 --- [ost-startStop-1] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
2014-03-05 10:57:51.253  INFO 45469 --- [ost-startStop-1] o.s.web.context.ContextLoader            : Root WebApplicationContext: initialization completed in 1358 ms
2014-03-05 10:57:51.698  INFO 45469 --- [ost-startStop-1] o.s.b.c.e.ServletRegistrationBean        : Mapping servlet: 'dispatcherServlet' to [/]
2014-03-05 10:57:51.702  INFO 45469 --- [ost-startStop-1] o.s.b.c.embedded.FilterRegistrationBean  : Mapping filter: 'hiddenHttpMethodFilter' to: [/*]

输出项:

  • 日志和时间,默认到毫秒
  • 日志等级ERRORWARNINFODEBUG, or TRACE.
  • 进程ID
  •  --- 是区分日志消息的开发
  • 线程名称:
  • 日志名称
  • 日志消息

日志等级调整

可以通过如下代码进行日志等级调整:

$ java -jar myapp.jar --debug

颜色代码输出

如果终端支持ASNI,颜色输出更加让其具有可读性,可以通过设置spring.output.ansi.enabled来支持。颜色代码是通过使用 %clr 来改变。例如%clr(%5p),其颜色与日志等级的对照如下列表

  • 红色:FATAL,ERROR
  • 黄色:WARNINING
  • 绿色:INFO,debug,trace

也可以通过指定其颜色:如下代码:%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){yellow}

文件输出

默认情况下,不不会写文件,可以通过在application.properties中设置logging.file 或logging.path来指定输出位置。

默认情况下,输出的为log,error,warning等级的日志,并且当其大于10M的时候,会重新写。可以通过指定属性logging.file.max-size 来改变默认大小。

日志等级

所有的日志系统都可以通过环境变量设置日志等级。其使用‘logging.level.*=LEVEL’ (其中level包括 TRACE, DEBUG, INFO, WARN, ERROR, FATAL, 或者 OFF)。其root可以通过root logger 进行配置,代码如下

logging.level.root=WARN
logging.level.org.springframework.web=DEBUG
logging.level.org.hibernate=ERROR

个性化日志配置

可以在根路径或者是spring环境中通过logging.config来指定日志信息。也可以通过指定org.springframework.boot.logging.LoggingSystem的类来指定用于实现日志的具体类。根据不同的日志系统,如下的日志将会被应用:

日志系统 个性化配置文件
Logback logback-spring.xmllogback-spring.groovylogback.xml, or logback.groovy
Log4j2 log4j2-spring.xml or log4j2.xml
JDK (Java Util Logging) logging.properties

(备注:1. 推荐使用带有-spring 的配置 2. 在使用JDKlogging的时候,避免使用executable jar执行)

为了帮助个性化,spring环境提供了一些公共的系统变量:

spring环境 系统变量 描述
logging.exception-conversion-word LOG_EXCEPTION_CONVERSION_WORD 当日志异常的时候使用
logging.file LOG_FILE 如果被使用,将会作为默认的日志配置
logging.file.max-size LOG_FILE_MAX_SIZE 最大的日志文件大小
 logging.path  LOG_PATH  日志路径
 logging.pattern.console  CONSOLE_LOG_PATTERN  在控制台的输出格式
 logging.pattern.file  FILE_LOG_PATTERN  指定其文件格式
 logging.pattern.level  LOG_LEVEL_PATTERN  输出日志的等级
 PID  PID  进程号

(备注:

    1. 如果想使用占位符,可以使用spring boot的语法,而不是其框架自身的语法:既使用“:”处理

    2. 可以通过配置logging.pattern.level=user:%X{user} %5p来打印调用用户的信息:代码运行结果后如下:

2015-09-30 12:30:04.031 user:someone INFO 22174 --- [  nio-8080-exec-0] demo.Controller
Handling authenticated request

logback的扩展

可以通过在logback-spring.xml中进行扩展,进而提供一些更加高级的功能。(备注:由于logback.xml配置是加载太早,因此不能再里面扩展,只能通过logback-spring.xml进行扩展。不能通过log-backde的配置扫描进行配置,否则,会出错)

01.特定环境配置

标签<springProfile> 可以让你排除或包括基于触发的环境的一些配置。通过使用 <configuration> 的支持方式,使用name的方式指定要链接哪一个配置。对于多个链接的配置,可以使用“,”分隔,代码如下:

<springProfile name="staging">
	<!-- configuration to be enabled when the "staging" profile is active -->
</springProfile>

<springProfile name="dev, staging">
	<!-- configuration to be enabled when the "dev" or "staging" profiles are active -->
</springProfile>

<springProfile name="!production">
	<!-- configuration to be enabled when the "production" profile is not active -->
</springProfile>

02. 环境属性

标签 <springProperty> 让你暴露Spring Environment 的属性供Logback使用。当其要链接到application.properties里面的值的时候,非常有用。其作为一种标准的logback标签使用。你通过指定变量属性的来源 source ,而不是直接指定值。你需要指定存储的范围(非local),如下代码所示:

<springProperty scope="context" name="fluentHost" source="myapp.fluentd.host"
		defaultValue="localhost"/>
<appender name="FLUENT" class="ch.qos.logback.more.appenders.DataFluentAppender">
	<remoteHost>${fluentHost}</remoteHost>
	...
</appender>

 备注以上参考:https://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/#boot-features-profiles

时间: 2024-09-19 11:08:44

spring boot 2.0特性之profile与日志的相关文章

spring boot 2.0特性之外部化配置

简介 spring boot允许你外部化其配置以便你能够在不同的环境中使用相同的代码.可以通过使用properties,YAML 文件,环境变量,以及命名行参数等形式外部化其配置.属性值可以通过@value的形式直接注入到bean中去(其通过spring 的抽象或者是通过使用@ConfigurationProperties绑定其结构化对象) spring boot使用了一种特别的 PropertySource允许你覆盖其值,其覆盖顺序如下: 1. devtools的环境变量被设置,则优先使用(其

spring boot 2.0 特性之springApplication

SpringApplication SpringApplication 类提供了在main函数中启动spring应用程序的便利性,通过调用其静态方法其实运行,代码如下: public static void main(String[] args) { SpringApplication.run(MySpringConfiguration.class, args); } 1. 默认情况下,其日志级别为info.如果上述启动失败,会注册FailureAnalyzers分析器获取一个对应的错误信息以及

Spring Boot 2.0.0.M2 发布

Spring Boot 2.0.0.M2 发布了.Spring Boot 项目旨在简化创建产品级的 Spring 应用和服务.你可通过它来选择不同的 Spring 平台.可创建独立的 Java 应用和 Web 应用,同时提供了命令行工具来允许 'spring scripts'. 更新内容请关注发行首页. 下载地址: Source code (zip) Source code (tar.gz) >>>[评论有礼]6月6日-30日评论每日更新的"新闻资讯和软件更新资讯",

spring boot 2.0之基础入门

spring boot介绍 spring boot为创建基于spring的应用提供了方便,不需要太多的配置,只需要很少的代码就可以实现.其也提供了对于普通java应用程序的支持以及传统的war应用支持.其主要目标:  1. 为spring开发提供快速的开发.  2. 对于一些不确定的需求能够先放在一边防止偏离.   3. 提供了很多非功能特性(例如内置服务器,安全机制,健康检查,外部配置).  4. 避免尽量少的代码以及配置. 系统条件 1. JDK 1.8以上 2. spring 5.0.2以

spring boot 2.0之使用spring boot

spring boot依赖 每一个spring boot的发型版本都包含了所依赖的版本,如果升级spring boot版本,其依赖也会同步更新升级.maven的用户可以通过继承spring-boot-starter-parent.其包含了一些合理的值的设置: 1. 默认设置的编译器为JDK 1.8 2. 源文件默认UTF-8编码 3. 从spring-boot-dependencies pom中继承的 Dependency Management 版本信息,在使用的时候,可以忽略其具体的版本信息.

Spring Boot特性

1. SpringApplication SpringApplication 类是启动 Spring Boot 应用的入口类,你可以创建一个包含 main() 方法的类,来运行 SpringApplication.run 这个静态方法: public static void main(String[] args) { SpringApplication.run(MySpringConfiguration.class, args); } 运行该类会有如下输出: . ____ _ __ _ _ /\

Spring Boot特性(转)

摘要: 1. SpringApplication SpringApplication 类是启动 Spring Boot 应用的入口类,你可以创建一个包含 main() 方法的类,来运行 SpringApplication.run 这个静态方法: public static void main(String... 1. SpringApplication SpringApplication 类是启动 Spring Boot 应用的入口类,你可以创建一个包含 main() 方法的类,来运行 Spri

使用 Spring Boot 快速构建 Spring 框架应用,PropertyPlaceholderConfigurer

Spring 框架对于很多 Java 开发人员来说都不陌生.自从 2002 年发布以来,Spring 框架已经成为企业应用开发领域非常流行的基础框架.有大量的企业应用基于 Spring 框架来开发.Spring 框架包含几十个不同的子项目,涵盖应用开发的不同方面.如此多的子项目和组件,一方面方便了开发人员的使用,另外一个方面也带来了使用方面的问题.每个子项目都有一定的学习曲线.开发人员需要了解这些子项目和组件的具体细节,才能知道如何把这些子项目整合起来形成一个完整的解决方案.在如何使用这些组件上

Spring Boot 探索系列 - 自动化配置篇

26. Logging Prev  Part IV. Spring Boot features  Next 26. Logging Spring Boot uses Commons Logging for all internal logging, but leaves the underlying log implementation open. Default configurations are provided for Java Util Logging,Log4J, Log4J2 an