在Java中,使用logback框架,有一种方法可以为繁琐的日志消息动态配置限制

Tom*_*Tom 1 java logback

我们在现场部署了一个系统,该系统具有使用logback日志记录框架的Java服务.每个服务都有自己的logback配置文件.

我们发现每秒多次以WARN级别发出特定的日志消息.我们真的只对看到这个消息感兴趣,例如,一次/分钟,以便我们知道问题正在发生; 但是我们不想提高类的日志记录级别,以便丢弃INFO级别的其他消息.

修改代码不是一种选择,也不会对涉及重新启动违规服务的系统进行任何修改.但是,我们可以修改日志配置.

有没有办法在logback中通过XML配置文件来实现这种行为?

更新 消息类似,但不相同; 例如:

WARN The following ID will be dropped: 12345
WARN The following ID will be dropped: 54321
Run Code Online (Sandbox Code Playgroud)

Dan*_*ble 5

如果消息完全相同,您可以查看使用"重复消息"过滤器.

http://logback.qos.ch/manual/filters.html#DuplicateMessageFilter

或者您可以使用评估程序筛选表达式:http: //logback.qos.ch/manual/filters.html#evalutatorFilter

像这样

<filter class="ch.qos.logback.core.filter.EvaluatorFilter">
  <evaluator name="loggingTaskEval">
    <expression>
      message.contains("following ID will be dropped") &amp;&amp;
      (timeStamp - event.getStartTime()) >= 20000
    </expression>
  </evaluator>
  <OnMatch>DENY</OnMatch>
</filter>
Run Code Online (Sandbox Code Playgroud)

在这里找到了这个例子:http://logback.qos.ch/demo.html