log4net Samouczek
Rozpoczęcie pracy z log4net
Szukaj…
Uwagi
Ta sekcja zawiera przegląd tego, czym jest log4net i dlaczego deweloper może chcieć z niego korzystać.
Powinien także wymieniać wszelkie duże tematy w log4net i zawierać linki do powiązanych tematów. Ponieważ Dokumentacja dla log4net jest nowa, może być konieczne utworzenie początkowych wersji tych pokrewnych tematów.
Konfigurowanie log4net
Stwórzmy prostą aplikację konsolową Hello World i zaloguj coś do konsoli za pomocą log4net. Po uruchomieniu tej funkcji możemy ją skalować w celu wykorzystania w rzeczywistych scenariuszach programistycznych w poniższych przykładach. Zacznijmy od małego i stwórzmy go stamtąd.
Najpierw musimy utworzyć prosty projekt konsoli w Visual Studio i WriteLine("Hello World") jak pokazano poniżej
Następnie musimy dodać bibliotekę log4net do naszego projektu. Dlatego musimy kliknąć prawym przyciskiem myszy Referencje i wybrać Zarządzaj pakietami NuGet
Następnie wyszukaj log4net i zainstaluj
Z powodzeniem dodaliśmy log4net.dll do naszego projektu.
Teraz musimy skonfigurować naszą app.config (lub web.config, jeśli jest to aplikacja internetowa). Ta część jest nieco trudna, ale nie panikuj. Przejdziemy przez to krok po kroku i zalogujemy się i uruchomimy.
W app.config musimy najpierw utworzyć sekcję konfiguracji w konfiguracji. Musimy podać nazwę i typ, jak pokazano poniżej:
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,Log4net"/>
</configSections>
To, co zrobiliśmy tutaj, to mówienie, że utworzymy sekcję w naszym pliku konfiguracyjnym o nazwie log4net której należy szukać. Tutaj znajdziesz wszystko, co dotyczy logowania. Od utworzenia naszego pliku dziennika, jak długo i jakie informacje należy zarejestrować. Przejdźmy teraz do stworzenia sekcji log4net .
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,Log4net"/>
</configSections>
<log4net>
</log4net>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
</startup>
</configuration>
Pierwszą rzeczą, którą dodamy w sekcji log4net, jest program dołączający. Program dołączający jest w zasadzie narzędziem do rejestrowania. Do tego chcemy rejestrować nasze dzienniki. Dostępnych jest wiele programów dołączających do logowania do plików, bazy danych itp. W tym przykładzie zalogujemy się do naszego okna konsoli, więc utwórzmy program dołączający do konsoli:
<log4net>
<appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
</appender>
</log4net>
Następnie musimy zdefiniować układ:
<log4net>
<appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
<layout type="log4net.Layout.PatternLayout">
</layout>
</appender>
</log4net>
W ramach układu zdefiniujemy, co chcemy wyświetlać w konsoli i jak chcemy to wyświetlać. W tym celu potrzebujemy wzorca konwersji. Istnieje wiele różnych rodzajów wzorów, których możemy użyć, w tym przykładzie będziemy trzymać się dość prostego wzoru.
<log4net>
<appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date{ABSOLUTE} [%thread] %level %logger - %message%newline"/>
</layout>
</appender>
</log4net>
To, co robimy powyżej, mówi, że potrzebujemy następujących informacji: Absolutny znacznik czasu, działający wątek, który zgłasza wyjątek oraz poziom rejestrowania. Log4net udostępnia 7 poziomów rejestrowania.
- WYŁ. - nic się nie loguje (nie można wywołać)
- FATALNY
- BŁĄD
- OSTRZEC
- INFO
- ODPLUSKWIĆ
- WSZYSTKO - wszystko zostaje zarejestrowane (nie można wywołać)
Jednak spośród 7 możemy używać tylko 5 (DEBUG, INFO, WARN, ERROR i FATAL). Zadeklarowanie poziomu rejestrowania jako DEBUG oznacza, że będzie rejestrować wszystko, tj. DEBUG, INFO, WARN, ERROR i FATAL. Jednak zadeklarowanie poziomu rejestrowania jako WARN spowoduje zalogowanie tylko WARN, ERROR i FATAL. Mam nadzieję, że rozumiesz hierarchię.
Ostatnią rzeczą, której potrzebujemy w app.config, jest sekcja główna. W sekcji głównej znajdują się nasze rejestratory najwyższego poziomu i poziom logowania. Ważne jest, aby zrozumieć, że wszystko dziedziczy od katalogu głównego, więc żaden program dołączający nie będzie się logować, chyba że będzie się do niego odwoływał w katalogu głównym. Po dodaniu tego, tak powinien wyglądać twój plik app.config :
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,Log4net"/>
</configSections>
<log4net>
<appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date{ABSOLUTE} [%thread] %level %logger - %message%newline"/>
</layout>
</appender>
<root>
<level value="DEBUG"/>
<appender-ref ref="ConsoleAppender" />
</root>
</log4net>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
</startup>
</configuration>
Kopiowanie i wklejanie sekcji pliku konfiguracyjnego nie jest złym pomysłem, jednak ważne jest, aby zrozumieć, za co są odpowiedzialne. Teraz, gdy skończyliśmy konfigurować naszą app.config , musimy dodać trochę kodu do naszego projektu konsoli. Po pierwsze, musimy zdefiniować jednorazowy wpis, który należy umieścić poza klasą.
[assembly: log4net.Config.XmlConfigurator(Watch = true)]
Umieść go poniżej moich instrukcji używania w pliku Program.cs. Następnie musimy utworzyć instancję programu rejestrującego, aby użyć go do logowania. Odbywa się to raz na klasę.
private static readonly log4net.ILog log = log4net.LogManager.GetLogger
(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
I w końcu musimy coś zalogować
log.Error("This is my error");
Twój plik Program.cs powinien wyglądać mniej więcej tak:
using System;
[assembly: log4net.Config.XmlConfigurator(Watch = true)]
namespace Log4netTutorial
{
class Program
{
private static readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
static void Main(string[] args)
{
Console.WriteLine("Hello World");
log.Error("This is my error");
Console.ReadLine();
}
}
}
Śmiało i uruchom program, powinieneś mieć swój błąd zalogowany w konsoli:



