2014-10-30 2 views
1

Мы используем TomEE, SLF4J и Logback. Наша цель состоит в том, чтобы записывать определенные записи ведения журнала в базу данных (определенную маркером) в дополнение к стандарту. Вот наша конфигурация Logback:Почему фильтр EvaluatorFilter не обрабатывает несогласованные утверждения?

<?xml version="1.0" encoding="UTF-8"?> 
<configuration> 
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> 
     <encoder>...</encoder> 
    </appender> 

    <appender name="DB" class="ch.qos.logback.classic.db.DBAppender"> 
     <connectionSource class="ch.qos.logback.core.db.DriverManagerConnectionSource"> 
      <driverClass>oracle.jdbc.OracleDriver</driverClass> 
      <url>...</url> 
     </connectionSource> 
     <filter class="ch.qos.logback.core.filter.EvaluatorFilter"> 
      <evaluator class="ch.qos.logback.classic.boolex.OnMarkerEvaluator"> 
       <marker>LOGDATABASE</marker> 
      </evaluator> 
     </filter> 
    </appender> 

    <root level="info"> 
     <appender-ref ref="STDOUT" /> 
     <appender-ref ref="DB" /> 
    </root> 
</configuration> 

Но хотя маркер не установлен, DBAppender журналов в базу данных. Зачем?

ответ

2

Фильтр работал не так, как ожидалось, потому что я не установил теги «onMatch» и «onMismatch». Вот рабочее решение:

<filter class="ch.qos.logback.core.filter.EvaluatorFilter"> 
    <evaluator class="ch.qos.logback.classic.boolex.OnMarkerEvaluator"> 
     <marker>LOGDATABASE</marker> 
    </evaluator> 
    <onMatch>ACCEPT</onMatch> 
    <onMismatch>DENY</onMismatch> 
</filter> 
Смежные вопросы