Расширить конфигурацию провайдера logback - PullRequest
0 голосов
/ 16 октября 2018

У меня есть конфигурация приложения по умолчанию (в которой используются провайдеры из 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, как указано во внешнем файле, а приложение обратного входа настраивается с набором правил по умолчанию + настраиваемые правила

. Любые указания относительно того, как это реализовать, будут полезны

...