Czy ktoś ma doświadczenie w obu przypadkach? Jak się ze sobą zestawiają?
Planujemy użyć jednego z nich do logowania się w aplikacji korporacyjnej.
Bibliografia:
EDYCJA: Nie mamy żadnych zależności od nlog lub log4net.
Czy ktoś ma doświadczenie w obu przypadkach? Jak się ze sobą zestawiają?
Planujemy użyć jednego z nich do logowania się w aplikacji korporacyjnej.
Bibliografia:
EDYCJA: Nie mamy żadnych zależności od nlog lub log4net.
Odpowiedzi:
Niedawno otrzymałem zadanie „prototypowania loginu” dla nadchodzącego projektu. Nie miałem żadnego doświadczenia w logowaniu. Przez kilka dni przeglądałem samouczki, tworzyłem aplikacje zabawkowe itp. W Log4Net, NLog i Enterprise Library. Wróć 3-4 tygodnie później i połącz je w spójne demo. Mam nadzieję, że niektóre z nich są dla Ciebie przydatne.
Moja rekomendacja dla naszego projektu jest następująca:
Jest to oparte na tych ustaleniach (opiniach!):
Więc oczywiście do tej pory lubię NLog. Jednak nie wystarczy, aby go użyć, mimo że dostępne jest inne rozwiązanie.
Kluczowym zagadnieniem, o którym niewiele się dyskutuje, jest wsparcie i aktualizacje.
Log4Net nie został zaktualizowany od czasu opublikowania wersji 1.2.10 19 kwietnia 2006 r .
Natomiast NLog jest aktywnie wspierany od 2006 r. Wkrótce wyda NLog 2.0 obsługujący wiele platform, które nie istniały podczas ostatniej aktualizacji log4net, takie jak:
Mając ostatnio doświadczenie z obiema platformami, pomyślałem, że mogę podzielić się swoimi poglądami na temat każdej z platform.
Zostałem poproszony o ocenę ram rejestrowania dla istniejącej aplikacji internetowej, zawęziłem swoje możliwości do NLog (v2.0) i log4net (v1.2.11) po przejściu przez różne fora internetowe. Oto moje ustalenia:
Założenie / uruchomienie z NLog jest bardzo łatwe. Przejdziesz samouczek Pierwsze kroki na ich stronie internetowej i gotowe. Masz dobry pomysł, jak może wyglądać nlog. Plik konfiguracji jest tak intuicyjny, że każdy może zrozumieć konfigurację. Na przykład: jeśli chcesz ustawić logowanie wewnętrzne, ustaw flagę w węźle nagłówka pliku konfiguracyjnego Nlog, czyli tam, gdzie się tego spodziewałeś. W log4net ustawiasz różne flagi w sekcji appSettings aplikacji web.config.
W log4net rejestrowanie wewnętrzne nie generuje irytującego znacznika czasu. W Nlogu masz ładny dziennik ze znacznikami czasu. Uznałem, że jest to bardzo przydatne w moich ocenach.
Filtry w log4net - Lepiej sprawdź moje pytanie - filtr log4net - jak pisać ORAZ filtr, aby ignorować komunikaty dziennika, a jeśli znajdziesz na to odpowiedź / rozwiązanie, daj mi znać. Rozumiem, że istnieje możliwość obejścia tego pytania, ponieważ możesz napisać własny filtr niestandardowy. Ale coś, co nie jest łatwo dostępne w log4net.
Wydajność - zalogowałem około 3000 komunikatów dziennika do bazy danych przy użyciu procedury składowanej. Użyłem simple for loop (int i = 0; i <3000; i ++ ... aby zarejestrować tę samą wiadomość 3000 razy. Do zapisu: log4net AdoAppender zabrał prawie dwa razy więcej czasu niż NLog.
Log4net nie obsługuje asynchronicznego programu dołączającego.
Wystarczyło porównanie, aby wybrać NLog jako środowisko rejestrowania. :)
Dla każdego, kto spóźni się na ten wątek, warto zajrzeć do biblioteki bazowej .Net Base Class Library (BCL). Wiele osób nie zauważyło zmian między .Net 1.1 a .Net 2.0, kiedy wprowadzono klasę TraceSource (około 2005).
Korzystanie z TraceSource jest podobne do innych platform rejestrowania, z dokładną kontrolą rejestrowania, konfiguracją w app.config / web.config i dostępem programowym - bez narzutu na blok aplikacji korporacyjnych.
Istnieje także szereg porównań: „log4net vs TraceSource”
Dla nas kluczową różnicą jest ogólna perf ...
Spójrz na Logger.IsDebugEnabled
NLog kontra Log4Net, z naszych testów NLog ma mniejszy narzut i właśnie o to nam chodzi (rzeczy o niskim opóźnieniu).
Na zdrowie, Florian
Najpierw spójrz na resztę swojego stosu.
Jeśli korzystasz z NHibernate, korzysta on bezpośrednio z Log4Net. Inne platformy mogą mieć inne specyficzne programy rejestrujące, których potrzebują.
Poza tym: oba działają dobrze.
Sam zdecydowałem się na Log4Net. Konfiguracja może być uciążliwa, a jeśli nie jest poprawnie skonfigurowana, trudno jest dowiedzieć się, co poszło nie tak. Ale możesz zmusić go do robienia wszystkiego, co chcesz od rejestratora.
Jeśli nie masz stałego problemu z Log4Net, oto artykuł, który napisałem o tym, jak zacząć: http://elegantcode.com/2007/12/07/getting-started-with-log4net/
Cóż .. Użyłem biblioteki Enterprise do zadań logowania do bazy danych, a teraz przełączyłem się na NLog z powodu wąskiego gardła wydajności.
niektóre informacje porównawcze:
http://pauliusraila.blogspot.com/2010/10/solving-database-logging-bottlenecks.html
Powtarzam powyższe i wolę nLog. Entlib jest niepotrzebnie wzdęty.
Re: Log4net Jedną z rzeczy, którą ZAWSZE mnie loguje do log4net, jest zapomnienie o dodaniu następujących elementów do pliku global.asax w celu zainicjowania komponentu:
log4net.Config.XmlConfigurator.Configure();
Jeśli pójdziesz tutaj , znajdziesz kompleksową matrycę, która obejmuje zarówno biblioteki NLog i Log4Net, jak i Enterprise Lib i inne produkty.
Ktoś mógłby argumentować, że matryca jest wykonana w sposób podkreślający cechy jedynej komercyjnej biblioteki lib znajdującej się w matrycy. Myślę, że to prawda, ale i tak przydał się mój wybór w porównaniu do NLog.
pozdrowienia
Jak zauważyłem, log4net blokuje pliki wyjściowe przez cały czas działania aplikacji, więc nie można ich usunąć. W przeciwnym razie są podobne.
Więc wolę NLog.
Bezwstydna wtyczka do projektu typu open source, który prowadzę, ale biorąc pod uwagę ożywioną dyskusję na temat tego, które ramy rejestrowania .NET są bardziej aktywne, pomyślałem, że opublikuję obowiązkowy link do Serilog .
Aby korzystać z aplikacji, Serilog jest podobny do log4net (i czerpie z niego dużo). Jednak w przeciwieństwie do innych opcji rejestrowania .NET, Serilog polega na zachowaniu struktury zdarzeń dziennika do analizy offline. Kiedy piszesz:
Log.Information("The answer is {Answer}", 42);
Większość bibliotek rejestrujących natychmiast renderuje komunikat w ciąg. Serilog też może to zrobić, ale zachowuje tę { Answer: 42 }
właściwość, aby później, korzystając z jednego z wielu magazynów danych NoSQL, można poprawnie wyszukiwać zdarzenia na podstawie wartości Answer
.
Jesteśmy blisko wersji 1.0 i obsługujemy wszystkie nowoczesne platformy (.NET 4.5, Windows Store i Windows Phone 8).
Drugi też NLog, ponieważ działa również z niezarządzanym kodem. Podejrzewam, że można używać log4net i log4cxx razem, ale NLog obsługuje zarówno kod zarządzany, jak i niezarządzany po wyjęciu z pudełka.
Spojrzałem również na Common.Logging , fasadę, która tworzy abstrakcję interfejsu logowania, obsługuje log4net, NLog i bibliotekę Entreprise. Nie sądzę, że będę go używał, ale podoba mi się, jak używają lambdas do poprawy wydajności, gdy logowanie jest wyłączone (funkcja współdzielona z NLog i prawdopodobnie innymi).
Możesz również rozważyć blok rejestrowania biblioteki Microsoft Enterprise Library . Pochodzi z miłym projektantem.
Na podstawie mojego doświadczenia, SmartInspect pokonuje zarówno jak i log4net.
Jest niezwykle łatwy w użyciu, dokumentacja jest świetna, a Ty możesz przeglądać i filtrować wcześniej zarejestrowane wiadomości pomocą interaktywnej przeglądarki dziennika , co stanowi ogromną zaletę w świecie rzeczywistym.
Jedną z rzeczy, które lubię, są widoki danych na kartach, takie jak karty przeglądarki w Chrome. Każda karta może zapewniać inny filtrowany widok dziennika.