Używam ColoredConsoleAppender, martwię się, czy kiedykolwiek zawiesi moją aplikację. ktoś ma doświadczenieCzy log4net kiedykolwiek zawiesi aplikację?
Odpowiedz
Z witryny log4net: http://logging.apache.org/log4net/release/faq.html
nr log4net nie jest niezawodny. Jest to system do optymalnego wysiłku i zatrzymania awarii.
Przez fail-stop rozumiemy, że log4net nie będzie wyświetlał nieoczekiwanych wyjątków w czasie wykonywania, potencjalnie powodując awarię aplikacji. Jeśli z jakiegoś powodu log4net wyrzuci niezatapiany wyjątek (z wyjątkiem ArgumentException i ArgumentNullException, które mogą zostać rzucone), wyślij wiadomość e-mail na listę dyskusyjną [email protected] Niekontrolowane wyjątki są traktowane jako poważne błędy wymagające natychmiastowej uwagi.
Ja osobiście używam go przez cały czas i nigdy nie miałem problemu.
Obawiam się, że przynajmniej ColouConsoleAppender zawiesi aplikację. Faktycznie spotykam jednego użytkownika: – user496949
@ user496949: Napotkałem ten sam problem. Użyłem niewidocznego procesu i dołączam do ColorConsoleAppender. –
Rzeczywiście rozwiązałem problem: proces wywołujący nie odczytał strumienia wyjściowego i ostatecznie strumień był "pełny". –
@ ralf.w. już pokazuje pełne objawy. Mogę przeformułować, ponieważ ostatnio spotkałem się z tym samym problemem.
- Należy opracować aplikację konsolową, która korzysta z narzędzia ColorConsoleAppender (lub ConsoleAppender) do drukowania dzienników.
- Utwórz kolejną aplikację (WinForms w moim przypadku), aby uruchomić tę konsolę (używając Process.Start). UseShellExecute = false, aby przekierować standardowe wyjście i błąd. CreateNoWindow = true. WindowStyle = Hidden.
Następnie na kilku komputerach (lub sesji pulpitu zdalnego), log4net zawiśnie aplikację konsoli, aw hang wysypisk widać to dziwnie czeka na zapis do strumienia, aby zakończyć.
Trudny do odtworzenia na normalnej maszynie (takiej jak moja), tak trudny do dalszego zbadania, chociaż log4net jest open source.
Obejście problemu może być tak proste, jak pokazanie aplikacji konsoli jako zminimalizowanej (zamiast ukrytej) i/lub zmienić inne ustawienia ProcessStartInfo.
Widzimy coś podobnego. Ustaliliśmy, że log4net (i/lub Windows) buforuje do 4KB wyjścia na stdout/stderr. Po zapełnieniu bufora kolejne połączenia będą zawieszane. Jeśli więc proces A uruchamia proces B, a proces B loguje się do konsoli, a proces A nie odczytuje stdout z uruchomionego procesu (proces B), proces B zawiesza się po wypełnieniu bufora. Włączenie przekierowania rozwiązuje problem. Mając odczyt z procesu A, stdout również rozwiązałby problem. – Jimothy
@Jimothy rozwiązałeś dla mnie problem;) Thx. – nozzleman
- 1. Czy log4net jest martwy?
- 2. Czy CHAR_BIT kiedykolwiek> 8?
- 3. Czy HttpHandler ASP.NET kiedykolwiek timeout
- 4. Czy/tmp w Linuksie kiedykolwiek się zapełnia?
- 5. Czy Log4Net Http Appender istnieje?
- 6. Czy został kiedykolwiek wybrany selektor wyboru webkitów?
- 7. Czy typofika JavaScript kiedykolwiek zwróciła "tablicę"?
- 8. Czy Activity.getIntent() kiedykolwiek zwróci wartość null?
- 9. Czy const_cast kiedykolwiek powoduje emisję kodu?
- 10. Czy kontekst aplikacji Android zostanie kiedykolwiek zniszczony?
- 11. Czy czas (NULL) może kiedykolwiek zwrócić błąd?
- 12. Czy send() kiedykolwiek blokuje podczas używania select()?
- 13. Czy obiekt Object.GetType() kiedykolwiek zwróci wartość null?
- 14. Czy liczby szesnastkowe są kiedykolwiek ujemne?
- 15. Czy kiedykolwiek można wykryć udostępnianie w Haskell?
- 16. Czy kiedykolwiek słyszałeś wzór wzorcowy "Pozycja"?
- 17. Czy heapsort był kiedykolwiek używany w praktyce?
- 18. Czy istnieje kiedykolwiek uzasadnienie "antypapieru pseudo-typedef"?
- 19. Czy random.Randint (1,10) kiedykolwiek zwróci 11?
- 20. Czy kiedykolwiek zostanie wywołana funkcja niejawnej konwersji?
- 21. Czy porównywalne kiedykolwiek porównać do innego typu?
- 22. Czy Delphi kiedykolwiek otrzymywał po każdej pętli?
- 23. Czy publiczny ruch UDDI jest martwy, czy kiedykolwiek był żywy?
- 24. miksowanie log4cxx i log4net
- 25. Inicjalizacja log4net
- 26. Czy istnieje wersja log4net dla Silverlight?
- 27. Czy istnieje wzór log4net dla MachineName
- 28. Co się stanie, jeśli program sterownika się zawiesi?
- 29. Każdy kiedykolwiek odwrócić (<$>)
- 30. log4net log4net.Util.PatternString configure z kodu
Nie tylko ColoredConsoleAppender. Nawet ConsoleAppender wisi w ten sam sposób. –