我们在现场部署了一个系统,该系统具有使用logback日志记录框架的Java服务。每个服务都有自己的logback配置文件。
我们发现每秒多次以WARN级别发出特定的日志消息。我们真的只对看到这个消息感兴趣,例如,一次/分钟,以便我们知道问题正在发生;但是我们不想提高类的日志记录级别,以便丢弃INFO级别的其他消息。
修改代码不是一个选项,也不会对涉及重新启动违规服务的系统进行任何修改。但是,我们可以修改日志配置。
有没有办法通过XML配置文件进行logback来实现这种行为?
更新 消息类似,但不完全相同;例如:
WARN The following ID will be dropped: 12345
WARN The following ID will be dropped: 54321
答案 0 :(得分: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") &&
(timeStamp - event.getStartTime()) >= 20000
</expression>
</evaluator>
<OnMatch>DENY</OnMatch>
</filter>
在此处找到了示例:http://logback.qos.ch/demo.html