Мне нужно обработать дублирование конкретных исключений в моих журналах.Игнорировать запись дублированных сообщений об исключениях из сторонних библиотек
Я использую 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-часах я буду иметь несколько ГБ в лог-файле.
Я хочу иметь сообщение журнала об этом исключении один раз в 1-5 минут. Есть ли способ игнорировать дублирование исключений в файле журнала?
Возможные решения:
Игнорировать все журналы для конкретного пакета и класса. [плохо, beucase я могу пропустить важное сообщение]
http://logback.qos.ch/manual/filters.html#DuplicateMessageFilter Используйте [плохо, потому что я могу установить только свойства AllowedRepetitions или CacheSize. Это будет соответствовать всем сообщениям, но мне нужно только конкретное исключение]
Напишите пользовательский фильтр Возможно, вы уже знаете, какие решения уже есть?
спасибо, это очень легко писать новые TurboFilter – Geniy