我只需要记录一些警告消息而不引入布尔标志,如hasBeenLogged = true
等。
假设我有以下代码片段(粗略示例):
for (int i = 0; i < 35; i++) {
log.warn("some message");
}
我只想记录这个警告信息一次,而不是35次..
slf4j
或log4j
是否有可能(开箱即用)使其成为可能?
感谢所有人。
答案 0 :(得分:1)
在log4j 2
中有RegexFilter
,但这并不是您所需要的,因为它只允许过滤掉所有出现的消息。
如果您考虑替代方案,Logback
功能DuplicateMessageFilter
。此过滤器完全符合您的需要。请参阅文档here。由于您使用的是slf4j
,因此将展示位置后面的实现从log4j
切换为Logback
应该没有任何问题。你可以在谷歌找到很多关于它的教程。