C#. Установка и настройка NLog

Многие начинающие разработчики рано или поздно сталкиваются с необходимостью ведения журналов работы приложения, или попросту лог-файлов. Самостоятельно разрабатывать функции ведения журналов не самая хорошая идея, тем более, что существует огромное множество готовых пакетов логгирования. Не будем перечислять их все и рассматривать достоинства и недостатки различных решений. Цель данной статьи показать, как использовать один из популярных пакетов по ведению разного рода журналов NLog в своем приложении.

Для начала, создадим консольное приложение demoNlog

В проекте следует перейти в установщик пакетов NuGet

Далее, необходимо найти и установить два пакета NLog и NLog.Config

Важный момент, конфигурационный файл NLog.Config должен находиться в директории программы, поэтому необходимо выставить свойство файла «Копировать в выходной каталог» в статус «Всегда копировать». Это позволит упростить и автоматизировать  применение изменений конфигурации логгирования.

Теперь можно приступить к настройке логгирования.

Определим, для примера, следующую задачу логгирования: Каждый день в отдельный файл, пишем все события начиная с уровня Debug и выше, логи пишутся в папку «logs».

Для начала необходимо в секцию  <targets> прописать параметры целевого вывода:

<!--
      Данная цель сохраняет лог в файл вида logs\2018-04-20.log
      вид сообщения: 2018-04-20 12:27:05.9121 DEBUG debug message
 -->
 <target xsi:type="File" name="filedata" fileName="${basedir}/logs/${shortdate}.log"
                  layout="${longdate} ${uppercase:${level}} ${message}" />


Таким образом, мы создаем целевой вывод с именем filedata, типом вывода File, и целевой файл logs\YYYY-MM-DD.log будет создаваться новый каждый день с именем даты.

Формат вывода будет следующего вида:

2018-04-20 12:27:05.9121 DEBUG debug message

После этого, в секции <rules> необходимо добавить следующие параметры:

<!-- Данное правило пишет все сообщения с минимальным уровнем Debug в целевой лог filedata -->

<logger name="*" minlevel="Debug" writeTo="filedata" />

Таким образом в лог будет попадать информация с минимальным уровнем Debug  и попадать в целевой лог filedata.

Теперь пропишем в нашей программе следующий код

using NLog;

namespace demoNlog
{
    internal class Program
    {
        private static Logger logger = LogManager.GetCurrentClassLogger();

        private static void Main(string[] args)
        {
            logger.Trace("trace message");
            logger.Debug("debug message");
            logger.Info("info message");
            logger.Warn("warn message");
            logger.Error("error message");
            logger.Fatal("fatal message");
        }
    }
}

После работы программы в папке logs будет создан лог-файл, в котором будет отражен журнал работы программы:

2018-04-23 13:20:34.9792 DEBUG debug message
2018-04-23 13:20:35.0552 INFO info message
2018-04-23 13:20:35.0552 WARN warn message
2018-04-23 13:20:35.0552 ERROR error message
2018-04-23 13:20:35.0552 FATAL fatal message

Пример описан в видео на нашем канале:

ссылки к статье:

Сайт разработчика NLog

Руководство по настройке NLog (eng)

Текст примера:

 

Comments are closed