• logback多环境配置


    现在项目基本都是要区分测试开发等等一系列环境的,也因此maven,spring之类的都具有profile这类功能,可以针对不同的环境采用不同的配置.因此日志也可能根据不同的环境需要不同的配置.恰巧手头上碰到了这么一个需求,日志文件也需要区分环境,便搜索了一下相关的资料,发现logback的确也提供这么一种支持.

    从logback官网的文档中找到一段关于<if>标签的配置说明,它提供一种根据表达式的值来决定是否输出配置的功能,类似于c标签中的if,官网的示例如下:

    <!-- if-then form -->
       <if condition="some conditional expression">
        <then>
          ...
        </then>
      </if>
      
      <!-- if-then-else form -->
      <if condition="some conditional expression">
        <then>
          ...
        </then>
        <else>
          ...
        </else>    
      </if>

    这个<if>标签可以使用在日志配置文件中的<configuration>标签内部任意位置,一种简单的使用实例如下:

    <?xml version="1.0" encoding="UTF-8"?>
    <configuration>
        <property resource="config.properties" />
        <appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
            <encoder>
                <charset>UTF-8</charset>
                <pattern>%date [%thread] %-5level - %msg%n</pattern>
            </encoder>
        </appender>
        <if condition='property("logstash").contains("true")'>
            <then>
                <appender name="logStash" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
                    <destination>${logstash.address}</destination>
                    <encoder class="net.logstash.logback.encoder.LogstashEncoder" />
                    <keepAliveDuration>15 minutes</keepAliveDuration>
                </appender>
            </then>
        </if>
        <root level="ERROR">
            <appender-ref ref="stdout"/>
            <if condition='property("logstash").contains("true")'>
                <then>
                    <appender-ref ref="logStash"/>
                </then>
            </if>
        </root>
    </configuration>

    这种标签只支持从property中取值,或是从system系统property中取值,取出的为string类型的值,可以通过contains方法判断是否满足某个条件.

    特别说明:这个是通过Janino库实现的,故需要加入此库的依赖.

    <dependency>
      <groupId>org.codehaus.janino</groupId>
      <artifactId>janino</artifactId>
      <version>3.0.6</version>
    </dependency>
  • 相关阅读:
    Ubuntu adb device
    ubuntu系统下创建软件桌面快捷方式
    Ubuntu 配置java环境变量
    Ubuntu 12.04 安装Chrome步骤
    java和php中static+final+synchronized 总结
    Sensor Hub 初探
    Ionic+PhoneGap+ Cordova
    Ionic初探 + 混合app的尝试
    ubuntu+dpkg+apt-get+aptitude 区别
    ubuntu下桌面系统及切换gdm+kdm+lightdm
  • 原文地址:https://www.cnblogs.com/chyu/p/8322271.html
Copyright © 2020-2023  润新知