Który programista log4Net jest najszybszy z wyjątkiem ConsoleAppendera?Jaki jest najszybszy program do log4Net?
Odpowiedz
Zamówienie na BufferingForwardingAppender. Używamy tego, co przekazuje do RollingFileAppender. Pobiera zapisy i pozwala na kontynuowanie kodu bez czekania na zapis. Ustawiliśmy system oceny, aby wymusić spłukiwanie na progu WARN i ustawić wartość stratną na false, abyśmy nie przegapili żadnych wiadomości.
<appender name="BufferingForwardingAppender" type="log4net.Appender.BufferingForwardingAppender">
<bufferSize value="512" />
<lossy value="false" />
<evaluator type="log4net.Core.LevelEvaluator">
<threshold value="WARN"/>
</evaluator>
<appender-ref ref="RollingFileAppender" />
</appender>
można napisać odpowiednik log4net z NullAppender, co byłoby bardzo szybko ... (Ups - Początkowo myślałem, pytanie było o log4j; ta sama rada dotyczy jednak.)
Oczywiście, że byłoby miło” Zrobić cokolwiek pożytecznego - co prowadzi mnie do zastanawiania się, dlaczego tak bardzo zależy Ci na szybkości. Normalnym podejściem jest ustalenie, czego potrzebujesz, a następnie porównanie/profilowanie w celu sprawdzenia, czy działa poprawnie. Podejrzewam, że będziesz zapchany większą ilością danych, niż możesz z pożytkiem przetworzyć, zanim faktycznie stanie się wąskim gardłem. Czy masz znany problem z wydajnością podczas rejestrowania?
Żaden problem z wydajnością nie jest związany z rejestrowaniem, ale ogólnie szukam poprawy wydajności aplikacji i dodałem log4Net do profilowania go w środowisku wykonawczym. Nie chcę, aby było to zbyt duże obciążenie, ponieważ aplikacja jest już powolna. Więc szukam aplikanta, który jest najszybszy. – Amitabh
@Amitabh: Jeśli aplikacja jest już wolna, oznacza to, że rejestrowanie to * mniej * może mieć znaczący wpływ. Naprawdę, używaj tego, co najłatwiejsze do zalogowania, a potem po prostu loguj się sensownie. To najprawdopodobniej najszybszy sposób na zwiększenie ogólnej szybkości aplikacji. –
Dodam, że czasami problemem nie jest to, jak wolno logować, ale jak inwazyjnie. Na przykład, jeśli logujesz się z wielu wątków, sama rejestracja może spowodować ich synchronizację, która wyłączy to, co chcesz zmierzyć. Typową odpowiedzią jest zalogowanie się do kolejki, która jest przetwarzana w jednym wątku. –
należy rozważyć
- pisanie do pliku jest znacznie szybsze niż pisanie pocieszyć
- Chyba problem jest z pre-produkcji (ceating danych dziennika, a następnie nie jest używany) użyj log.canLog, aby się upewnić, że możesz się zalogować, zanim utworzysz dane (zwykle jest to duży czas).
- Sprawdź, czy nie używasz wszystkich rodzajów pól, które są czasochłonne, jak aktualne poświadczenia użytkownika itp. .
Bardzo dobry pomysł. Nie próbowałem jeszcze, ale kiedyś. –
Dokładnie to, czego nie wiedziałem, czego szukałem. – ctrlplusb
Przetestowałem to w prostym projekcie internetowym i (zaskakująco) skalowalność się nie poprawia, jest raczej gorsze. ** Test **: 500 żądań/50 użytkowników dla 20 wierszy dziennika na żądanie. ** Wyniki **: Brak logowania: 278 odpowiedzi/s, Rolling File Appender: 129 req/s, buforowanie przekazywania z toczącym się plikiem: 76 req/s. – tozevv