Esiste una soluzione di registrazione con funzionalità di raggruppamento delle eccezioni? Quello che voglio ottenere è quando si registra qualche eccezione, ad esempio 100 volte in 10 secondi, non voglio registrare 100 tracce dello stack. Voglio registrare qualcosa come RuntimeException was thrown 100 times: single stack trace here
. Sarebbe perfetto avere qualcosa di integrato con log4j
.Java: raggruppamento di eccezioni identiche nei registri
Ofc c'è un'opzione per creare qualche facciata di logging con coda di eccezione all'interno ma forse c'è qualcosa già implementato.
Solo un pensiero: come gestiresti l'interlacciamento dei log indotto dai diversi thread? per esempio. se un thread registra X un gran numero di volte e un altro thread registra Y un gran numero di volte, si può finire con XYXYXYX Y. Ho dovuto fare qualcosa di simile su un progetto precedente e il framework di registrazione di terze parti non era la soluzione (abbiamo implementato il nostro meccanismo di raggruppamento ...) – xav
@xav yes, ofc ci saranno alcuni problemi di concorrenza. Nel mio caso, la soluzione potrebbe essere metodi di registrazione sincronizzati/raccolte di concorrenza per lo stato di archiviazione con eccezione sequenziata o smth simile. Quindi X Y X Y X Y -> Xx3 Yx3. Potresti dirci un po 'di più su come è stato implementato il tuo meccanismo di raggruppamento? – coolguy
Non ho parlato di questo tipo di concorrenza. Avere due thread logging allo * stesso tempo * andrà bene per log4j. L'uso di 'synchronized' nel tuo codice non aiuta affatto per il problema di cui ho parlato. Ho parlato di questo tipo di casi: un thread TX registra X, quindi due secondi dopo, un altro thread TY registra Y, quindi due secondi dopo, il thread TX registra X, quindi due secondi dopo, il thread TY registra Y, .... Come un risultato, il tuo file di log conterrà XYXYX Y ... (eccetto se hai un file di log per thread, che sarebbe strano) – xav