Spring Boot学习--logback与properties配置文件

Spring Boot支持多种log插件,这里说的是logback。

准确说来,这次要介绍的有两点:

  • profiles与logback
  • 从logback中获取配置文件中的信息

有一点需要先说明,这里先要把logback.xml的名字改为logback-spring.xml。
官网上明确说了,如果不改名字,使用logging.config会出现一些问题,所以我们直接把名字改了比较好。

profiles与logback

一般的配置文件都会有四个:application、dev、staging和prod。相信这几个不需要我来解释了。
有些时候生成日志也可能在不同环境下要求标准不一样,这就有了在log中对环境选择的需求。

标签能够在标签的任何位置使用。官方示例如下:

<springProfile name="staging">
    
springProfile>

<springProfile name="dev, staging">
    
springProfile>

<springProfile name="!production">
    
springProfile>

现在我来给出具体示例,我想在不同的环境下,log文件的路径不同:

Spring Boot学习--logback与properties配置文件_第1张图片

具体代码,方便大家拷贝:


<configuration scan="true" scanPeriod="300 seconds">

    <springProperty scop="context" name="fluentHost" source="myapp.fluentd.host" defaultValue="localhost"/>

    <appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <springProfile name="dev">
                <fileNamePattern>/logs/dev/myconfig.%d{yyyy-MM-dd}.logfileNamePattern>
            springProfile>
            <springProfile name="prod">
                <fileNamePattern>/logs/prod/myconfig.%d{yyyy-MM-dd}.logfileNamePattern>
            springProfile>
            <maxHistory>30maxHistory>
        rollingPolicy>
        <encoder>
            <pattern>${fluentHost} %d{yyyy-MM-dd HH:mm:ss}: %p [%t] %c{1} %F:%L - %m%npattern>
        encoder>
    appender>
    <appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>${fluentHost} %d{yyyy-MM-dd HH:mm:ss}: %p [%t] %c{1} %F:%L - %m%npattern>
        encoder>
    appender>
    <root level="info">
        <appender-ref ref="file" />
        <appender-ref ref="stdout" />
    root>
configuration>

我这里只是做演示,没有定义staging环境。
我给dev和prod环境配置了不同的log文件生成路径,分别使dev文件生效和prod生效会有我们期望的效果。
application.properties中的配置:

spring.profiles.active=dev

这是使dev生效,是prod生效的时候将上面改为prod即可。具体效果不做演示了。

从logback中获取配置文件中的信息

现在来看第二点,从配置文件中读取配置信息,也是大多数朋友想要的功能。
这里要用到标签。
官网示例:

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

source的内容为application.properties中定义的信息,defaultValue为缺省值,name就是在这个配置文件中的变量名,scope固定值,使用${}来获取值。

看示例:

"context" name="fluentHost" source="myapp.fluentd.host" defaultValue="localhost"/>

这行代码配置在logback-spring.xml中,在上面有给出完整的信息。

在下边任意位置可以使用${fluentHost}来获取配置文件中的内容,如果没有配置,既可以获得缺省值localhost。

application.properties中的配置:

myapp.fluentd.host=8.8.8.8

这些内容很简单,也很实用,关于这些如果有问题可以给我留言。

你可能感兴趣的:(SpringBoot)