Начиная разрабатывать проект мы с вами сталкиваемся с надобностью отслеживания логики поведения нашего проекта, существует много вариантов как это сделать, но сегодня мы остановимся на довольно крутом инструменте NLog. Зачем разрабатывать свой велосипед, если все давно сделали за вас?
Если вы незнакомы с NuGet, прошу почитать пару статей: Что такое NuGet и Как импортировать пакеты NuGet в ваш проект
Первое то что нам необходимо сделать, это подключить наш NuGet пакет NLog и его дополнительные пакеты (NLog.Schema и NLog.Config).
Далее мы переходим к настройке, для этого перейдем в NLog.config.
Содержимое конфига разбито на блоки, мы будет работать с блоком Targets и Rules.
В этом блоке мы создаем точку записи, разберем все по отдельности.
Type - куда будет записываться лог. Список всех типов.
Name - Имя для цели.
Остальные параметры описываются в зависимости от Type. Их можно найти в списке всех типов, ссылка выше.
Пример записи лога в файл, где {basedir} это директория в которой находится ваша программа, {shortdate} означает дату в коротком формате.
Ну здесь я разберу очень простой пример.
Name - имя правила, НЕ цели.
Minlevel - минимальный уровень логирования который будет записываться для цели.
WriteTo - название цели к которому относится правило.
Именно так рекомендуется объявлять логер в вашем классе.
Больше информации на GitHub
Да, очень кратко, но буду смотреть на вопросы и дополнять статью.
Если вы незнакомы с NuGet, прошу почитать пару статей: Что такое NuGet и Как импортировать пакеты NuGet в ваш проект
Первое то что нам необходимо сделать, это подключить наш NuGet пакет NLog и его дополнительные пакеты (NLog.Schema и NLog.Config).
Далее мы переходим к настройке, для этого перейдем в NLog.config.
NLog.config
Конфиг необходим для настройки поведения логов, какие логи будут записываться и куда они будут записываться.Содержимое конфига разбито на блоки, мы будет работать с блоком Targets и Rules.
Targets
Цели, куда и в каком формате будет записан лог.В этом блоке мы создаем точку записи, разберем все по отдельности.
Type - куда будет записываться лог. Список всех типов.
Name - Имя для цели.
Остальные параметры описываются в зависимости от Type. Их можно найти в списке всех типов, ссылка выше.
Пример записи лога в файл, где {basedir} это директория в которой находится ваша программа, {shortdate} означает дату в коротком формате.
XML:
<!--
Данная цель сохраняет лог в файл вида 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}" />
Rules
Правила, исходя из чего будет записан тот или иной лог.Ну здесь я разберу очень простой пример.
Name - имя правила, НЕ цели.
Minlevel - минимальный уровень логирования который будет записываться для цели.
WriteTo - название цели к которому относится правило.
XML:
<rules>
<logger name="*" minlevel="Warn" writeTo="target1" />
</rules>
Объявление
Чтобы объявить логер нам необходимо написать:
C#:
private Logger logger = LogManager.GetCurrentClassLogger();
Уровни логирования
C#:
Logger logger = LogManager.GetCurrentClassLogger(); // Чтобы было к чему обращаться
log.Trace("trace message"); // Для пошаговой отладки (самый маленький уровень логирования)
log.Debug("debug message"); // Для стандартной отладки
log.Info("info message"); // Информационные сообщения
log.Warn("warn message"); // Предупреждение, еще не ошибка, но нужно решать проблему
log.Error("error message"); // Ошибка, но программа продолжает работать, требует незамедлительного исправления
log.Fatal("fatal message"); // Фатальная ошибка, программа продолжать работу корректно не может
Код:
2021-05-22 12:21:46.1380 | TRACE | NLogUnderstanding.Program | trace message
2021-05-22 12:21:46.1380 | DEBUG | NLogUnderstanding.Program | debug message
2021-05-22 12:21:46.1380 | INFO | NLogUnderstanding.Program | info message
2021-05-22 12:21:46.1380 | WARN | NLogUnderstanding.Program | warn message
2021-05-22 12:21:46.1380 | ERROR | NLogUnderstanding.Program | error message
2021-05-22 12:21:46.1381 | FATAL | NLogUnderstanding.Program | fatal message
Больше информации на GitHub
Да, очень кратко, но буду смотреть на вопросы и дополнять статью.