java - 在 Java 中,使用 logback 框架,有没有办法动态配置聊天日志消息的限制

标签 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

最佳答案

如果邮件完全相同,您可以使用重复邮件过滤器查看。

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>

在此处找到该示例:http://logback.qos.ch/demo.html

关于java - 在 Java 中,使用 logback 框架,有没有办法动态配置聊天日志消息的限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33289549/

相关文章:

java - 停止一个线程并启动另一个线程?

java - 使用嵌入式 Tomcat 启动 Spring 应用程序 (STS) 时,java.exe 和 javaw.exe 进程都在同一端口上创建

java - 我应该使用哪个API来登录java

java - 将编码器添加到 Sentry 附加器时出现错误

scala - Akka SLF4J 和 Scala 中的 logback

spring - Spring boot 中特定包的自定义日志文件

java - 如何在Logback中定义一个具有默认值的变量并覆盖它?

java - Java中如何将int[]转换为List<Integer>?

java - android studio 3 (linux pc) java 1.8 上的 API 22 5.1 sdk 设备

java - 新的 Date() 对象给出相同的值