美文网首页
Spring Boot 特性(三)Profiles&Loggin

Spring Boot 特性(三)Profiles&Loggin

作者: 镏金糖豆 | 来源:发表于2020-05-21 21:29 被阅读0次

Profiles

官方文档地址Logging

在特性(二)中已经提过了,利用profile可以做对不同环境的定制化配置。
基于配置文件,在配置上有两种玩法:

#指定激活哪个profile配置
spring.profiles.active: prod
......
#指定包含哪些profile文件
spring.profiles.include:
  - proddb
  - prodmq

基于bean可以通过@Profile设置条件激活

/**
  *只有在 production 被激活才生效
  *当然 @Component, @ConfigurationProperties 也可以使用Profile注解
  **/
@Configuration()
@Profile("production")
public class ProductionConfiguration {

    // ...

}

这个特性简单易懂,网上文章一搜一大把,就不多说了。

Logging

官方文档地址Logging

默认情况下Spring boot使用Logback记录日志
默认情况下Spring boot不会输出日志到文件。具体配置方法请参看原文档。
默认情况下Spring boot日志级别为INFO。
关于日志级别,日志输出格式,日志输出方式,等基础日志配置方法不在赘述了,可以直接查看原文档。

关于日志组

Spring boot可以定义日志组,把几个包下面的日志关联到一个组统一管理。
例如,如果想统一管理tomcat日志,可以这样做

logging.group.tomcat=org.apache.catalina, org.apache.coyote, org.apache.tomcat
#通过上面的配置,一行配置就可以更改整个组的日志级别
logging.level.tomcat=TRACE

Spring Boot提供了以下默认分组:

Name Loggers
web org.springframework.core.codec, org.springframework.http, org.springframework.web, org.springframework.boot.actuate.endpoint.web, org.springframework.boot.web.servlet.ServletContextInitializerBeans
sql org.springframework.jdbc.core, org.hibernate.SQL, org.jooq.tools.LoggerListener

有了分组再也不用在配置中看到一大堆日志级别配置了

关于定制化配置

SpringBoot支持使用其他日志工具记录日志,鉴于Logback本身足够优秀且SpringBoot对其支持的够好,本文不介绍如何定制化,有需求请参看原文。

针对Logback的扩展配置

使用logback-spring.xml作为配置文件,而不是logback.xml,这样才能获得SpringBoot的扩展支持。
tag <springProfile>支持按profile条件配置

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

tag <springProperty> 支持引用spring environment中的配置

<springProperty  name="fluentHost" source="myapp.fluentd.host"
        defaultValue="localhost"/>
<appender name="FLUENT" class="ch.qos.logback.more.appenders.DataFluentAppender">
    <!-- 可以直接使用${}获取属性值 -->
    <remoteHost>${fluentHost}</remoteHost>
    ...
</appender>

相关文章

网友评论

      本文标题:Spring Boot 特性(三)Profiles&Loggin

      本文链接:https://www.haomeiwen.com/subject/btcxahtx.html