首页 > 解决方案 > 如何过滤 logback.xml 中的特定类记录器?

问题描述

我们尝试过滤从一类生成的日志:

com.websudos.phantom

为了两个目标:

  1. 来自应用程序的所有日志都保存在文件中,除了来自这个 calss 的日志

  2. 此文件中的所有日志都转移到 graylog。

我们使用此过滤器通过正则表达式过滤了这些日志:

<filter class="ch.qos.logback.core.filter.EvaluatorFilter">
    <evaluator>
        <matcher>
        <Name>parameter</Name>
        <regex>Executing query</regex>
    </matcher>
    <expression>parameter.matches(formattedMessage)</expression>
    </evaluator>
    <OnMismatch>DENY</OnMismatch>
    <OnMatch>ACCEPT</OnMatch>
</filter>

这个类的Executing query正则表达式:com.websudos.phantom

我们不接受将此类的级别设置为,OFF因为我们需要将此日志传输到graylog而不是保存在文件中!

有什么解决办法?

标签: logbackgraylog

解决方案


这是一个解决方案:

<filter class="ch.qos.logback.core.filter.EvaluatorFilter">
  <evaluator> <!-- defaults to type ch.qos.logback.classic.boolex.JaninoEventEvaluator -->
    <expression>logger.equals("com.websudos.phantom")</expression>
  </evaluator>
  <OnMismatch>NEUTRAL</OnMismatch>
  <OnMatch>DENY</OnMatch>
</filter>

通过将此过滤器添加到任何appander,来自类的日志 com.websudos.phantom被忽略


推荐阅读