2011-02-10 18 views
7

Pracuję nad aplikacją transakcyjną o małym opóźnieniu. Chcielibyśmy zwiększyć ilość rejestrowanych plików Lof4j do pliku, jednocześnie minimalizując wpływ na nasz czas przetwarzania od końca do końca.Jak asynchronicznie używać FileAppenders log4j?

Jaki jest zalecany sposób wykonania tej czynności? Myślę FileAppender.append jest synchroniczna, tak musimy zrobić coś nieco mądrzejsza ....

+1

"myślisz"? Czy sprawdziłeś, że to wąskie gardło? To powinno być łatwe do zrobienia. –

+2

Podpowiedź: sprawdź [JavaDoc] (http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/FileAppender.html#getBufferedIO()) dla opcji 'BufferedIO'. –

Odpowiedz

3

Jeśli musisz zalogować się z wielowątkowych aplikacji slf4j i jego realizacji logback są znacznie lepszym wyborem.

+0

jest to "ostrożna" flaga, która pozwala ci tak powiedzieć? –

3

pamiętać, że AsyncAppender dodaje wątek za appender & że zwiększenie ilości zalogowaniu robisz może oznaczać znaczny wzrost ilości ciąg concatentation dzieje co często oznacza znaczna ilość przetwarzania/formatowania/formatowania ciągów znaków, która może być dość droga (w porównaniu do opóźnień związanych z aplikacją do handlu o małym opóźnieniu).