Jak robić logowanie w C # za pomocą Log4net

Kiedy piszesz kod komputerowy w C # dobrym pomysłem jest włączenie kodu rejestrującego. W ten sposób, gdy coś pójdzie nie tak, wiesz, od czego zacząć. Świat Java robi to od lat. W tym celu możesz użyć log4net. Jest częścią Apache log4j 2, popularnej platformy rejestrowania typu open source.

To nie jedyne środowisko rejestrowania .NET; jest wiele. Jednakże Apacz Nazwa jest zaufana, a oryginalna platforma rejestrowania Java istnieje już od ponad 15 lat.

Dlaczego warto korzystać z Log4net Logging Framework?

Gdy aplikacja lub serwer ulegnie awarii, zastanawiasz się, dlaczego. Czy była to awaria sprzętowa, złośliwe oprogramowanie, może atak typu „odmowa usługi” lub jakaś dziwna kombinacja kluczy, której udało się ominąć wszystkie sprawdzenia kodu? Po prostu nie wiesz.

Musisz dowiedzieć się, dlaczego nastąpiła awaria, aby można ją było naprawić. Po włączeniu rejestrowania możesz zobaczyć, dlaczego tak się stało.

Pierwsze kroki

Pobierz plik log4net ze strony internetowej Ap4 log4net. Sprawdź integralność pobranych plików za pomocą podpisu PGP lub sum kontrolnych MD5. Sumy kontrolne nie są tak silnymi wskaźnikami jak podpis PGP.

instagram viewer

Korzystanie z Log4net

Log4net obsługuje siedem poziomów logowania od zera do wszystkich w rosnącym priorytecie. To są:

  1. POZA
  2. FATALNY
  3. BŁĄD
  4. OSTRZEC
  5. INFO
  6. ODPLUSKWIĆ
  7. WSZYSTKO

Wyższe poziomy obejmują wszystkie niższe. Podczas debugowania za pomocą ODPLUSKWIĆ pokazuje wszystko, ale przy produkcji możesz zainteresować się tylko FATAL. Wyboru tego można dokonać na poziomie komponentu programowo lub w pliku konfiguracyjnym XML.

Rejestratory i dodatki

W celu zapewnienia elastyczności log4net używa rejestratorów, programów dołączających i układów. Logger to obiekt, który kontroluje rejestrowanie i jest implementacją interfejsu ILog, który określa pięć metod boolowskich: isDebugEnabled, IsInfoEnabled, IsWarnEnabled, IsErrorEnabled i IsFatalEnabled. Określa również pięć metod - Debugowanie, Informacje, Ostrzeganie, Błąd i Fatal - wraz z przeciążeniami i pięcioma sformatowanymi wersjami ciągów. Pełny interfejs ILog można zobaczyć w instrukcji online log4net.

Rejestratory mają przypisany jeden z poziomów, ale nie WSZYSTKIE lub WYŁĄCZONE, tylko pozostałe pięć.

Dołączający kontrolują, gdzie idzie rejestrowanie. Może to być baza danych, bufor w pamięci, konsola, zdalny host, plik tekstowy z ciągłymi dziennikami, dziennik zdarzeń systemu Windows, a nawet e-mail przez SMTP. W sumie jest 22 dołączających i można je łączyć, dzięki czemu masz duży wybór. Dołączające są dołączane (stąd nazwa) do rejestratora.

Programy dołączające filtrują zdarzenia, dopasowując podłańcuchy, poziom zdarzenia, zakres poziomów i początek nazwy programu rejestrującego.

Układy

Wreszcie istnieje siedem układów, które można powiązać z aplikacją. Kontrolują one sposób rejestrowania komunikatu zdarzenia i mogą obejmować tekst wyjątku, układ znaczników czasu i Elementy XML.

Konfigurowanie za pomocą XML

Chociaż konfigurację można wykonać programowo, można to również zrobić za pomocą plików XML Config. Dlaczego wolisz pliki konfiguracyjne niż zmiany w kodzie? Proste, o wiele łatwiej jest poprosić pracownika pomocy technicznej o zmianę pliku konfiguracyjnego niż poprosić programistę o zmianę kodu, przetestowanie i ponowne wdrożenie nowej wersji. Tak więc pliki konfiguracyjne są do zrobienia. Najprostszą możliwą ścieżką jest dodanie App.config twojego projektu, jak pokazano w poniższym przykładzie:

1.0utf-8





















Dokumentacja online log4net wyjaśnia wszystkie pola pliku konfiguracyjnego. Po skonfigurowaniu App.config dodaj za pomocą log4net i tej linii:

[montaż: log4net. Config. XmlConfigurator (Watch = true)]

Ponadto rzeczywisty rejestrator musi zostać pobrany za pomocą połączenia z LogManager. GetLogger (...). GetLogger jest zwykle wywoływany z typof (klasa), w którym jest używany, ale ta funkcja wywołuje również:

System. Odbicie. MethodBase. GetCurrentMethod (). DeclaringType

Ten przykład pokazuje oba z jednym komentarzem, więc możesz wybrać.

using log4net;
[montaż: log4net. Config. XmlConfigurator (Watch = true)]
przestrzeń nazw gvmake
{
Program zajęć
{
prywatny statyczny tylko do odczytu ILog log = LogManager. GetLogger (System. Odbicie. MethodBase. GetCurrentMethod
() .DeclaringType);
// prywatny statyczny tylko do odczytu ILog log = LogManager. GetLogger (typeof (Program));
static void Main (string [] args)
{
log. Debugowanie („uruchamianie aplikacji”);
}
}
}