Sono abbastanza nuovo in Java e log4j2, mi dispiace per la domanda forse strana. Il mio problema è il seguente. Ho scritto un'applicazione che utilizza log4j2 per la registrazione. Il programma analizza i dati e scrive un avviso nel caso in cui la stringa data non possa essere analizzata come desiderato. A volte il programma riceve un sacco di stringhe inaspettate e quindi registra sempre lo stesso messaggio di errore. Quindi, la domanda è, come evitare di registrare lo stesso messaggio di errore più e più volte. Invece, ad esempio, per vedere lo stesso messaggio di errore 2000 volte nel file di log, vorrei avere un suggerimento nel file di log che questo messaggio di errore sia stato scritto x-times. Il mio attuale file di aspetto log4j2 config come segue:Come sopprimere i messaggi duplicati in 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>
In realtà si potrebbe avere senso per avere piuttosto una generica AppenderWrapper delegando al vostro Appender attuale. In questo modo puoi facilmente passare facilmente alle appendici se non ti piace più l'appender della console. – philnate
È possibile ottenere lo stesso risultato utilizzando un filtro. Il filtro può essere fornito con un numero di modelli da abbinare agli eventi. Se il filtro corrisponde a un modello, lo alimenta in una memoria in memoria e interrompe la propagazione dell'evento. Il bean di memoria in-memory può quindi avere un worker che utilizza semplicemente un vecchio log per registrare la tua aggregazione (assicurati di scrivere shit quando si spegne).In questo modo puoi semplicemente riutilizzare tutti i tuoi aggregatori e far filtrare il filtro. – pandaadb