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

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
22天前
|
Java 应用服务中间件 Maven
SpringBoot 项目瘦身指南
SpringBoot 项目瘦身指南
38 0
|
1月前
|
Java 测试技术 数据库
SpringBoot:@Profile注解和Spring EL
SpringBoot:@Profile注解和Spring EL
|
1月前
|
XML Java 数据格式
【二十九】springboot整合logback实现日志管理
【二十九】springboot整合logback实现日志管理
53 1
|
3月前
|
Java Spring
【Spring Boot】logback和log4j日志异常处理
【1月更文挑战第25天】【Spring Boot】logback和log4j日志异常处理
|
2月前
|
设计模式 前端开发 Java
玩转Spring—Spring5新特性之Reactive响应式编程实战
玩转Spring—Spring5新特性之Reactive响应式编程实战
59 0
|
1天前
|
安全 Java 应用服务中间件
江帅帅:Spring Boot 底层级探索系列 03 - 简单配置
江帅帅:Spring Boot 底层级探索系列 03 - 简单配置
4 0
江帅帅:Spring Boot 底层级探索系列 03 - 简单配置
|
3天前
|
XML Java C++
【Spring系列】Sping VS Sping Boot区别与联系
【4月更文挑战第2天】Spring系列第一课:Spring Boot 能力介绍及简单实践
28 0
【Spring系列】Sping VS Sping Boot区别与联系
|
27天前
|
存储 SQL Serverless
Serverless 应用引擎常见问题之应用下的【应用事件】以及企业级特性下的【事件中心】没有日志如何解决
Serverless 应用引擎(Serverless Application Engine, SAE)是一种完全托管的应用平台,它允许开发者无需管理服务器即可构建和部署应用。以下是Serverless 应用引擎使用过程中的一些常见问题及其答案的汇总:
34 0
|
1月前
|
SQL NoSQL Java
【七】springboot整合AOP实现日志操作
【七】springboot整合AOP实现日志操作
41 0
|
1月前
|
消息中间件 运维 监控