Jestem całkiem nowy w Javie i log4j2, więc przepraszam za może dziwne pytanie. Mój problem jest następujący. Napisałem aplikację, która używa log4j2 do logowania. Program analizuje dane i zapisuje ostrzeżenie w przypadku, gdy dany ciąg nie może zostać przeanalizowany zgodnie z oczekiwaniami. Czasami program dostaje wiele nieoczekiwanych ciągów i dlatego loguje cały czas ten sam komunikat o błędzie. Pytanie brzmi: jak uniknąć wielokrotnego rejestrowania tego samego komunikatu o błędzie. Zamiast na przykład, aby zobaczyć ten sam komunikat o błędzie 2000 razy w pliku dziennika, chciałbym mieć wskazówkę w pliku logu, że ten komunikat o błędzie został napisany x-razy. Mój obecny wygląd log4j2 plik config w następujący sposób:Jak tłumić zduplikowane wiadomości w log4j2
<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
<Properties>
<Property name="pattern">%d{DEFAULT} %-5p %-18.18c %4.4L [%-15.15t] %m%n</Property>
</Properties>
<Appenders>
<Console name="STDERR" target="SYSTEM_ERR">
<PatternLayout pattern="${pattern}" />
</Console>
</Appenders>
<Loggers>
<Root level="warn">
<AppenderRef ref="STDERR" />
</Root>
</Loggers>
</Configuration>
Właściwie to może mieć sens raczej ogólny AppenderWrapper delegowania aktualnej appender. Łatwo więc możesz łatwo zmienić aplikantów, jeśli nie lubisz już aplikacji Console. – philnate
Możesz osiągnąć to samo, używając filtra. Filtr może być dostarczony z wieloma wzorami, aby dopasować się do wydarzeń. Jeśli filtr pasuje do wzorca, przesyła go do pamięci wewnętrznej i zatrzymuje propagację zdarzenia. Komponent bean przechowujący pamięć w pamięci może następnie mieć pracownika, który po prostu używa zwykłego starego dziennika do rejestrowania agregacji (pamiętaj, aby napisać shit podczas zamykania).W ten sposób możesz po prostu ponownie wykorzystać wszystkie swoje agregatory i mieć filtr dot pracy. – pandaadb