2016-12-26 24 views
5

Do rejestrowania używamy NLog lub Serilog. Jesteśmy zajęci przenoszeniem systemu z ASP.NET do ASP.NET Core, który jest has logging built in.Czy wbudowane rejestrowanie ASP.NET Core powoduje, że NLog/Serilog/etc jest przestarzały?

Idealnie, chcielibyśmy zrezygnować z NLog, ponieważ nie wydaje się, aby było to już potrzebne.

Jednak czy wbudowane rejestrowanie jest równoważne funkcji NLog? Czy brakuje w nim głównych funkcji? Czy jest jakiś sens dalszego używania NLog (lub czegoś podobnego, np. Serilog)?

Odpowiedz

4

Rejestrowanie asp.net to wspólny interfejs (logowanie) i implementacja dziennika.

Można używać wspólnego interfejsu i biblioteki zewnętrznej (np. NLog) razem, ponieważ infrastruktura jest przygotowana na to.

Zażycie NLog nad wbudowanym zalogowaniu realizację wygrasz:

  • zmianę konfiguracji on-the-fly (podczas uruchamiania aplikacji bez restartu)
  • więcej celów (na przykład bazy danych, plik). W wbudowanym pliku docelowym nie ma pliku docelowego: https://docs.microsoft.com/en-us/aspnet/core/fundamentals/logging. Docelowy adres w NLog nie jest jeszcze w sieci, ale jest zaplanowany.
  • więcej opcji w celach archiwizacji plików (np)
  • pisanie dodatkowe informacje kontekstowe, jak ${processid}
  • jak inwestować dużo w optymalizacji wydajności, spodziewałbym wydajność.
  • rejestrowanie asynchroniczne - które nie jest rejestrowane w asp.net, o ile wiem.
  • zaawansowane funkcje, takie jak buforowanie, fallbacking & ograniczając swoje logi, warunki filtrujące z informacją kontekstowego, pisząc jednocześnie z gemcytabiną do jednego pliku itp
  • NLog jest łatwiejsze do rozszerzenia (nie tylko cele, ale także układu renderujące, schematy itp)
  • możliwość rejestrowania strukturalnym (Serilog, NLog 4,5)

Ale jak zawsze, jeśli nie trzeba tych funkcji, to może mniej (bibliotek) jest więcej.

+0

Czy rejestrowanie asynchroniczne jest niedostępne w trybie NLog lub w środowisku ASP.NET Core? – grokky

+0

Rdzeń Aspnet. Przeformułowano ją :) – Julian

+0

Jeśli chodzi o "zmianę konfiguracji w locie (podczas uruchamiania aplikacji bez restartu)" -> niektóre ASP.Rejestratory NET Core również to obsługują! Ale NLog jest zdecydowanie lepszy od wszystkich! – Eilon

5

Nie powiedziałbym, że API do logowania ASP.NET Core sprawia, że ​​NLog i inni dostawcy są przestarzałe. To, co zapewnia ASP.NET Core, jest ładną abstrakcją, dzięki czemu można przełączać struktury logowania bez zmiany kodu, który zależy od logowania.

Nlog nadal dostarcza przydatnych configuration features, które nie są zaimplementowane w interfejsie API rdzenia ASP.NET Core.

+0

Tak konfiguracja NLog za pomocą pliku xml jest przydatna. Można to jednak łatwo zrobić w środowisku konfiguracyjnym ASP.NET Core. Zastanawiam się, czy to wystarczający powód, aby utrzymać NLog. – grokky

+0

Cóż, myślę, że to zależy wyłącznie od twoich wymagań. Jeśli API do logowania ASP.NET jest dla Ciebie wystarczający - użyj go. Pamiętaj, że jeśli chcesz logować się do pliku tekstowego, nie tylko do konsoli, będziesz musiał użyć jakiegoś operatora rejestrowania. Serilog ma prostą konfigurację do przesyłania logów do pliku tekstowego. – Andrius

+0

Nie zdawałem sobie sprawy, że [nie loguje się na dysk] (https://docs.microsoft.com/en-us/aspnet/core/fundamentals/logging#built-in-logging-providers). To jest ważna brakująca funkcja! – grokky