Ali*_*aka 5 java logging logback slf4j
我不确定“轰炸”一词是否正确。轰炸是指同一内容(消息和参数)多次记录。
例如,拒绝服务附加可能会导致日志警告,表明未经身份验证的用户正在尝试访问某些API。日志:
[03-29 11:26:01.000] missing token
[03-29 11:26:01.001] missing token
[03-29 11:26:01.005] missing token
... overall 100000 times
Run Code Online (Sandbox Code Playgroud)
我要解决的问题是防止日志过大。大小是个问题。另外,由于重复消息的数量过多,可能看不到其他重要消息。
我希望能够防止此类日志爆炸,并提供一些汇总消息,例如:
[03-29 11:26:01.000] missing token
[03-29 11:26:06.000] missing token [silenced. Overall 100000 times]
Run Code Online (Sandbox Code Playgroud)
因此,我在这里寻找2个功能:
是否知道如何以及如何使用logback做到这一点?也许另一个日志记录工具可以支持这一点?谢谢。
的DuplicateMessageFilter,过滤掉确切重复的消息,可能适合你的第一个要求。目前,过滤器在指定阈值(通过设置)之后停止所有重复消息allowedRepititions,这可能是不可取的。如果您希望根据新消息或基于 time重置重复计数,则必须扩展过滤器。但是,它不提供静默日志的摘要。
示例登录配置:
<configuration>
<turboFilter class="ch.qos.logback.classic.turbo.DuplicateMessageFilter" allowedRepetitions="2"/>
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%date [%thread] %-5level %logger - %msg%n</pattern>
</encoder>
</appender>
<root level="INFO">
<appender-ref ref="console" />
</root>
</configuration>
Run Code Online (Sandbox Code Playgroud)