是否有可能只记录一次消息?

时间:2015-08-02 09:34:19

标签: java logging log4j slf4j

我只需要记录一些警告消息而不引入布尔标志,如hasBeenLogged = true等。

假设我有以下代码片段(粗略示例):

for (int i = 0; i < 35; i++) {
    log.warn("some message");
}

我只想记录这个警告信息一次,而不是35次..

slf4jlog4j是否有可能(开箱即用)使其成为可能?

感谢所有人。

1 个答案:

答案 0 :(得分:1)

log4j 2中有RegexFilter,但这并不是您所需要的,因为它只允许过滤掉所有出现的消息。

如果您考虑替代方案,Logback功能DuplicateMessageFilter。此过滤器完全符合您的需要。请参阅文档here。由于您使用的是slf4j,因此将展示位置后面的实现从log4j切换为Logback应该没有任何问题。你可以在谷歌找到很多关于它的教程。