扩展logback提供程序配置

时间:2018-10-16 00:33:38

标签: java logstash logback slf4j

我有一个默认的附加程序配置(它使用logstash-logback-encoder的提供程序)类似于下面的配置

<appender name="JSON_APPENDER" class="ch.qos.logback.core.ConsoleAppender">
 <encoder class="a.b.c.logging.CustomLogbackEncoder">
  <providers>
   <timestamp/>
   <version/>
   <loggerName/>
   <threadName/>
   <logLevel/>
   <provider class="a.b.c.logging.LogMaskingProvider">
    <rules>
     <rule>
      <name>cc</name>
      <pattern>\d{13,18}</pattern>
     </rule>
    <rule>
      <name>SSN</name>
      <pattern>\s+\d{3}-?\d{3}-?\d{4}\s+</pattern>
    </rule>
   </rules>
   <userRules>
    <!-- **** Read custom user rules ****--->
    </userRules>
   </provider>
   <stackTrace/>
  </providers>
 </encoder>
</appender>

上面的配置是使用ImplicitAction读取和配置的,没有任何问题,并绑定到以下POJO

public class Rules {

  private final Set<Rule> rules = new LinkedHashSet<>();

  public void addRule(Rule definition) {
   rules.add(definition.createRule());
 }
...
}

充当默认配置。客户端无法直接使用此默认配置,因此客户端无法直接对其进行更改。

我正在寻找扩展此默认配置的方法,其中不同的用户可以在中指定其他规则。此配置在logback.xml之外的单独文件中提供,该文件位于名为custom.xml的文件中,类似于

<userRules>   
 <rule>
  <name>email</name>
  <pattern>([a-zA-Z0-9_\-\.]+)@[a-zA-Z0-9_\-\.]+\.[a-zA-Z]{2,5}</pattern>
 </rule>
 <rule>
   ...
 </rule>
</userRules>  

我正在寻求实现此操作(标记为****)的方法,以便提供程序获得外部文件中提供的userRules,并且使用默认+自定义规则集配置回退追加程序

任何有关如何实现此目的的指针都会有所帮助

0 个答案:

没有答案