2011-02-10 1 views
7

Lavoro su un'applicazione di trading a bassa latenza. Vorremmo aumentare la quantità di logging lof4j che scriviamo su file, riducendo al minimo l'impatto sul nostro tempo di elaborazione end-to-end.Come utilizzare FileAppender di log4j in modo asincrono?

Qual è il modo consigliato per farlo? Penso che FileAppender.append sia sincrono, quindi dobbiamo fare qualcosa di più intelligente di quello ....

+1

"pensi"? Hai verificato che si tratta in realtà di un collo di bottiglia? Dovrebbe essere abbastanza facile da fare. –

+2

Suggerimento: selezionare [JavaDoc] (http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/FileAppender.html#getBufferedIO()) per l'opzione 'BufferedIO'. –

risposta

3

Se è necessario effettuare il login da un'applicazione multithread slf4j e la sua implementazione logback sono la scelta migliore.

+0

è la bandiera "prudente" che ti permette di dirlo? –

3

tenere a mente che AsyncAppender aggiunge un thread per appender & che aumentando la quantità di registrazione che fai può significare un notevole aumento della quantità di stringa di concatenazione succede che spesso significa una quantità notevole di elaborazione di stringhe/mungitura/formattazione che può essere piuttosto costosa (rispetto alla latenza coinvolta in un'app di trading a bassa latenza).