W tym poście chciałbym krótko opisać sposób wykonywania logów za pomocą pakietu NuGet NLOG.
[Źródło: https://docs.microsoft.com/en-us/dotnet/]
Informacje o NLOG można znaleźć na stronie https://github.com/NLog/NLog/wiki/Tutorial.
Po zainstalowaniu w projekcie pojawi się plik NLog.config który będzie zawierał konfigurację biblioteki.
Poniżej prosta konfiguracja zawierająca zapis wiadomości do dwóch plików na konsolę.
- <?xml version="1.0" encoding="utf-8" ?>
- <nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.nlog-project.org/schemas/NLog.xsd NLog.xsd"
- autoReload="true"
- throwExceptions="false"
- internalLogLevel="Off" internalLogFile="c:\temp\nlog-internal.log">
- <!-- optional, add some variables
- https://github.com/nlog/NLog/wiki/Configuration-file#variables
- -->
- <variable name="myvar" value="myvalue"/>
- <!--
- See https://github.com/nlog/nlog/wiki/Configuration-file
- for information on customizing logging rules and outputs.
- -->
- <targets>
- <target name="logfile"
- xsi:type="File"
- fileName="logs/Log.${longdate:cached=true}.log"
- layout="${longdate}|${level:uppercase=true}|${logger}|${message}"
- />
- <target name="logfile2"
- xsi:type="File"
- fileName="logs/trace.${longdate:cached=true}.log"
- layout="${longdate}|${level:uppercase=true}|${logger}|${threadid}|${message}|${exception:format=tostring}"/>
- <target name="logconsole"
- xsi:type="Console"
- layout="${longdate}|${level:uppercase=true}|${logger}|${message}"/>
- </targets>
- <rules>
- <logger name="*" level="Info" writeTo="logfile" />
- <logger name="*" level="Trace" writeTo="logfile2" />
- <logger name="*" level="Debug" writeTo="logconsole" />
- </rules>
- </nlog>
W celu zapisania różnych danych wykorzystuje się różne poziomy logowania danych:
- Trace - wykorzystywany do zapisywania dokładnych logów z przebiegu działania aplikacji.
- Debug - Informacja do debugowania
- Info - informacje.
- Warn - ostrzeżenia. Przeważnie nie zdarzenia krytyczne.
- Error - Błędy oraz wyjątki. Najczęściej używane np w Exception. Po których aplikacja działa poprawnie.
- Fatal - Najwyższy poziom. Rejestracja błędów krytycznych uniemożliwiających poprawne działanie aplikacji.
Poniżej przykładowe wywołanie kilku informacji z wykorzystaniem powyższego pliku config.
Najpierw do pliku należy dołączyć bibliotekę:
- using NLog;
Każda klasa korzystająca z logowania musi posiadać statyczne pole Logger.
- private static Logger log = LogManager.GetCurrentClassLogger();
Wywołanie następuje po podaniu odpowiedniej funkcji z zapisem odpowiednich informacji:
- log.Info("Info {Name}", "Value");
- log.Debug("Debug {0}", "TestVal");
- log.Trace("Trace");
- //logowanie błędów
- catch (Exception ex)
- {
- log.Error(ex, "ERROR");
- }