C# · Programowanie

Logowanie – konfiguracja NLog

Ostatnio miałam okazję konfigurować logowanie w aplikacji. Użyłam do logowania paczki NLog.

Plik konfiguracyjny NLog

Na samym wstępie musiałam do pliku konfiguracyjnego (app.config lub web.config) dodać odpowiedni wpis:

<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"&gt;

    <variable name="logDirectory" value="logs/${shortdate}"/&gt;

    <targets&gt;
        <target name="infoconsole" xsi:type="ColoredConsole"  layout="${longdate} ${callsite} ${level} ${message}"/&gt;
        <target name="debugfile" xsi:type="File" fileName="${logDirectory}/debugfile.txt"/&gt;
        <target name="errorfile" xsi:type="File" fileName="${logDirectory}/errorfile.txt"/&gt;
    </targets&gt;

    <rules&gt;
        <logger name="*" minlevel="Info" writeTo="infoconsole"/&gt;
        <logger name="*" minlevel="Debug" writeTo="debugfile"/&gt;
        <logger name="*" minlevel="Error" writeTo="errorfile"/&gt;
    </rules&gt;

</nlog&gt;

Jak widać, plik składa się z 4 części. Poniżej opiszę każdą z nich.

Sekcja nlog

<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"&gt;

</nlog&gt;

Sekcja nlog to tzw. root element.

Sekcja variable

<variable name="logDirectory" value="logs/${shortdate}"/&gt;

W sekcji nlog można zdefiniować variable, które później można użyć w kolejnych krokach konfiguracji. W powyższym przypadku tworzymy zmienną o nazwie logDirectory, która tworzy ścieżkę sklejając nazwę folderu logs oraz datę w skróconej formie (o innych predefiniowanych zmiennych możecie poczytać w dokumentacji).

Sekcja targets

<targets&gt;
	<target name="infoconsole" xsi:type="ColoredConsole"  layout="${longdate} ${callsite} ${level} ${message}"/&gt;
	<target name="debugfile" xsi:type="File" fileName="${logDirectory}/debugfile.txt"/&gt;
	<target name="errorfile" xsi:type="File" fileName="${logDirectory}/errorfile.txt"/&gt;
</targets&gt;

W sekcji targets możemy określić, gdzie ma być zapisywany output loggera. W powyższym przykładzie mamy 3 takie miejsca:

  • konsola z ustawieniem ColoredConsole (dzięki konfigurowalnym kolorom trochę bardziej czytelna, niż wersja Console), która dodatkowo będzie pisać komunikaty w określonym formacie (z wykorzystaniem predefiniowanych zmiennych longdate, callsite, level i message)
  • plik o nazwie debugfile.txt, który będzie zapisany w folderze o nazwie zdefiniowanej w zmiennej logDirectory
  • plik o nazwie errorfile.txt, który będzie zapisany w folderze o nazwie zdefiniowanej w zmiennej logDirectory

Sekcja rules

<rules&gt;
	<logger name="*" minlevel="Info" writeTo="infoconsole"/&gt;
	<logger name="*" minlevel="Debug" writeTo="debugfile"/&gt;
	<logger name="*" minlevel="Error" writeTo="errorfile"/&gt;
</rules&gt;

W sekcji rules można zdefiniować kokretne loggery, które będą pisać do konkretnych miejsc. W przykładzie mamy do wyboru:

  • logger o minimalnym poziomie Info, który będzie pisał na konsolę komunikaty z poziomów Info-Warn-Error-Fatal
  • logger o minimalnym poziomie Debug, który będzie pisał komunikaty z poziomów Debug-Info-Warn-Error-Fatal do pliku zdefiniowanego w targecie o nazwie debugfile
  • logger o minimalnym poziomie Error, który będzie pisał komunikaty z poziomów Error-Fatal do pliku zdefiniowanego w targecie o nazwie errorfile

Konfiguracja NLog z poziomu kodu

Jest jeszcze inna opcja konfiguracji NLoga – z poziomu kodu. Ale tej części nie będę już opisywać, możecie o niej poczytać w dokumentacji.

Warto mieć na uwadze, że powyższe przykłady nie pochodzą z rzeczywistego projektu, są tylko przykładami pozwalającymi poznać kilka ciekawych zastosowań i konfiguracji loggera.

Skomentuj

Wprowadź swoje dane lub kliknij jedną z tych ikon, aby się zalogować:

Logo WordPress.com

Komentujesz korzystając z konta WordPress.com. Wyloguj /  Zmień )

Zdjęcie na Google

Komentujesz korzystając z konta Google. Wyloguj /  Zmień )

Zdjęcie z Twittera

Komentujesz korzystając z konta Twitter. Wyloguj /  Zmień )

Zdjęcie na Facebooku

Komentujesz korzystając z konta Facebook. Wyloguj /  Zmień )

Połączenie z %s