Zobacz to pytanie dla innej wyczerpującą odpowiedź: When should I use Tracing vs Logger.NET, Enterprise Library, log4net or Ukadc.Diagnostics?
W skrócie, główne ramy rejestrowania dostępne są wbudowane w .NET Framework System.Diagnostics, log4net, NLog i Enterprise Library Logging Block aplikacji.
Porównanie tych głównych ram jest dostępna pod adresem: https://essentialdiagnostics.codeplex.com/wikipage?title=Comparison
1) Log zarządzania plikami
Wszystkie główne ramy wymienione powyżej wsparcie toczenia pliki, ale myślę, że opuszczenie porządki do ciebie .
np. w przeszłości używałem zaplanowanego zadania Windows, które używa robocopy z "/ mov/minage X", aby przenieść stare pliki gdzie indziej, a następnie usunąć lub cokolwiek innego.
EventSchemaTraceListener używany w System.Diagnostics, który I blogged about recently, ma opcję LimitedCircularFiles, ale niewiele obsługuje narzędzi do przeglądania logów (są one w XML).
2) Możliwość wysyłania maili na niektóre rodzaje komunikatów błędów zalogowany (na przykład)
Wszystkie główne ram wymienione powyżej wsparcia tego bezpośrednio lub za pośrednictwem rozszerzeń (dodatkowe słuchaczy).
3) umiejętność pisania wiadomości do zdarzeń systemu Windows
znowu wszystkich głównych ram wsparcia to jednak ja generalnie polecam, że pisanie w dzienniku zdarzeń systemu Windows powinno być wykonane bezpośrednio i nie przez śledzenie.
Jednym z problemów jest pytanie o automatyczne tworzenie źródeł.
Każde pismo w dzienniku zdarzeń (który przechodzi przez EventLog.WriteEvent) będzie automatycznie próba stworzenia źródła na pierwszej wiadomości dziennika, jeśli nie istnieje - problem jest z bezpieczeństwem, tylko administratorzy mogą do tworzenia źródeł, więc działa jako zwykły użytkownik, to się nie udaje.
Z tego powodu naprawdę trzeba dodać EventLogInstaller, aby źródło zostało utworzone w czasie instalacji (instalacja jest wykonywana przez administratora). Po utworzeniu każdy proces może następnie napisać do źródła.
To prowadzi do mojej rekomendacji, że należy utworzyć i zapisać w dzienniku zdarzeń kod, aby upewnić się, że źródło dziennika zdarzeń jest takie samo. Ponadto, jeśli zapisujesz w dzienniku zdarzeń ogólnie, nie chcesz, aby był on "wyłączony" poprzez błędną konfigurację.
Moja osobista rekomendacja to gotowe rozwiązanie .NET Framework System.Diagnostics, w szczególności przeglądarka usług śledzenia, doskonale nadaje się do diagnozowania problemów, w szczególności w wielowarstwowych środowiskach wielowątkowych, jeśli używa się WCF, gdzie może przejść korelacja identyfikuje poszczególne poziomy.
log4net jest zdecydowanie najczęściej używanym i spełnia wszystkie te wymagania. To ten, którego bym użył, ale YMMV. – Thorarin
Spróbuj tego: http://stackoverflow.com/search?q=[.net]+logging Znajdziesz wiele ciekawych odpowiedzi. –
Duplikat, ale Cole W przedstawia pewne specyficzne wymagania, o których myślał, co jest miłe w tym pytaniu. – Marijn