在Java中,使用logback框架,是否有一种方法可以动态配置聊天日志消息的限制

在Java中,使用logback框架,是否有一种方法可以动态配置聊天日志消息的限制,java,logback,Java,Logback,我们在现场部署了一个系统,该系统具有使用logback日志框架的Java服务。每个服务都有其自己的logback配置文件 我们发现一条特定的日志消息以每秒多次的警告级别发出。我们真正感兴趣的只是看到这个消息,例如,一次/分钟,这样我们就知道问题正在发生;但是我们不想提高类的日志记录级别,这样其他信息级别的消息就会被丢弃 修改代码不是一个选项,也不会对系统进行任何涉及重新启动违规服务的修改。但是,我们可以修改日志配置 在logback中是否有任何方法可以通过XML配置文件实现这种行为 更新 信息相

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

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

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

在logback中是否有任何方法可以通过XML配置文件实现这种行为

更新 信息相似,但不完全相同;例如:

WARN The following ID will be dropped: 12345
WARN The following ID will be dropped: 54321

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

也可以使用计算器过滤器表达式:

像这样

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

在此处找到该示例:

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

也可以使用计算器过滤器表达式:

像这样

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

在这里找到了该示例:

我添加了一条注释以澄清消息内容-很好的参考,但这似乎不是DuplicateMessageFilter支持的功能。您使用自定义筛选器查看了吗?这里有一个例子:这种情况发生在一个必须保持运行的已部署系统上,因此这更多的是一个我们是否可以关闭这个实时系统的问题,而不是一个我们应该如何修复编程错误的问题。我们已经解决了编程问题,但仍然需要处理这个特定客户的问题issue@Tom为什么?如果日志不是严格连接的,那么过滤器也应该这样做,JaninEventEvaluator会很有用,如果我们在中编译的话:-我添加了一条注释以澄清消息内容-很好的参考,但这似乎不是DuplicateMessageFilter的支持功能。您使用自定义过滤器查看了吗?这里有一个例子:这种情况发生在一个必须保持运行的已部署系统上,因此这更多的是一个我们是否可以关闭这个实时系统的问题,而不是一个我们应该如何修复编程错误的问题。我们已经解决了编程问题,但仍然需要处理这个特定客户的问题issue@Tom为什么?如果日志不是严格连接的,那么过滤器也应该执行。如果我们在以下文件中编译,JaninEventEvaluator将非常有用:-