加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 忽略第三方库的重复异常消息的记录

发布时间:2020-12-15 02:12:15 所属栏目:Java 来源:网络整理
导读:我需要在日志中处理特定exeptions的重复. 我使用slf4j和logback登录我的应用程序.我使用一些外部服务(DB,apache kafka,第三方库等).当连接丢失到这样的服务时,我得到例外,例如 [kafka-producer-network-thread | producer-1] WARN o.a.kafka.common.network.
我需要在日志中处理特定exeptions的重复.

我使用slf4j和logback登录我的应用程序.我使用一些外部服务(DB,apache kafka,第三方库等).当连接丢失到这样的服务时,我得到例外,例如

[kafka-producer-network-thread | producer-1] WARN  o.a.kafka.common.network.Selector - Error in I/O with localhost/127.0.0.1
java.net.ConnectException: Connection refused: no further information
    at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method) ~[na:1.8.0_45]
    at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:717) ~[na:1.8.0_45]
    at org.apache.kafka.common.network.Selector.poll(Selector.java:238) ~[kafka-clients-0.8.2.0.jar:na]
    at org.apache.kafka.clients.NetworkClient.poll(NetworkClient.java:192) [kafka-clients-0.8.2.0.jar:na]
    at org.apache.kafka.clients.producer.internals.Sender.run(Sender.java:191) [kafka-clients-0.8.2.0.jar:na]
    at org.apache.kafka.clients.producer.internals.Sender.run(Sender.java:122) [kafka-clients-0.8.2.0.jar:na]
    at java.lang.Thread.run(Thread.java:745) [na:1.8.0_45]

问题是我每秒都收到这条消息.此异常消息将充斥我的日志文件,因此我将在N小时内在日志文件中有几个GB.

我希望每1-5分钟有一次关于此异常的日志消息.有没有办法忽略日志文件中的异常重复?

可能的解决方案:

>忽略特定包和类的所有日志.
[不好,因为我可以跳过重要的信息]
>使用http://logback.qos.ch/manual/filters.html#DuplicateMessageFilter
[糟糕,因为我只能设置属性AllowedRepetitions或CacheSize.它会匹配所有消息,但我只需要特定的例外]
>编写自定义过滤器
也许,你知道已经解决了吗?

解决方法

我认为您最好的选择就是扩展您已找到的 DuplicateMessageFilter.它不是最终的,它很容易:

>使用基于classname或exceptionType的过滤方法或您想要根据其做出初步决定的任何其他内容来实现新的TurboFilter
>然后委托父类进行duplicity-check

您可用的参数:

public FilterReply decide(Marker marker,Logger logger,Level level,String format,Object[] params,Throwable t) {

包括Throwable和Logger.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读