您的位置:首页 > 编程语言 > Java开发

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

2017-09-16 19:18 786 查看
Spring Boot支持多种log插件,这里说的是logback。

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

profiles与logback

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

有一点需要先说明,这里先要把logback.xml的名字改为logback-spring.xml。

官网上明确说了,如果不改名字,使用logging.config会出现一些问题,所以我们直接把名字改了比较好。

profiles与logback

一般的配置文件都会有四个:application、dev、staging和prod。相信这几个不需要我来解释了。

有些时候生成日志也可能在不同环境下要求标准不一样,这就有了在log中对环境选择的需求。

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

<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>


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



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

<?xml version="1.0" encoding="UTF-8"?>
<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}.log</fileNamePattern>
</springProfile>
<springProfile name="prod">
<fileNamePattern>/logs/prod/myconfig.%d{yyyy-MM-dd}.log</fileNamePattern>
</springProfile>
<maxHistory>30</maxHistory>
</rollingPolicy>
<encoder>
<pattern>${fluentHost} %d{yyyy-MM-dd HH:mm:ss}: %p [%t] %c{1} %F:%L - %m%n</pattern>
</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%n</pattern>
</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中获取配置文件中的信息

现在来看第二点,从配置文件中读取配置信息,也是大多数朋友想要的功能。

这里要用到标签。

官网示例:

<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>


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

看示例:

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


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

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

application.properties中的配置:

myapp.fluentd.host=8.8.8.8


这些内容很简单,也很实用,关于这些如果有问题可以给我留言。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息