我们正在使用TomEE,SLF4J和Logback。我们的目标是除了标准输出之外,还将某些日志记录语句记录到数据库中(由标记确定)。这是我们的logback配置:
<?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会记录到数据库。为什么呢?
答案 0 :(得分:2)
过滤器没有按预期工作,因为我没有设置&#34; onMatch&#34;和&#34; onMismatch&#34;标签。这是工作解决方案:
<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>