Show/Hide Toolbars

Руководство по тех. обслуживанию

term_icon NLog — библиотека .NET, необходимая для логирования приложений в случаях, когда причину некорректного поведения в системе нельзя определить без дополнительной диагностики. Процесс логирования не вмешивается в работу приложения и не влияет на нее, но создает специальный журнал, в котором хранится информация о состоянии работы приложения.

Настройка осуществляется через конфигурационный файл NLog.config. Стандартный Nlog отличается в зависимости от типа (.NET Core/TC) и ОС (Win/Linux):

NLog-Win-TC.config

NLog-Win.config

NLog-Linux.config

По умолчанию файл находится в C:\inetpub\wwwroot и каждый раз заменяется на стандартный при накате приложения. Как правило, изменение файла не требует перезапуск пула.

Элементы конфигурации

Вы можете использовать следующие элементы в качестве дочерних элементов для <nlog />. Элементы <targets /> и  <rules /> обязательны для присутствия во всех файлах конфигурации NLog, остальные являются необязательными и могут быть полезны в расширенных сценариях.

Элемент

Описание

<targets />

Определяет цели/выходы журнала. Для каждой цели требуется два атрибута:

name — Название цели

type — Тип цели, например: "File", "Database", "Mail ". При использовании пространств имен этот атрибут называется xsi:type.

<rules />

Определяет правила маршрутизации журналов, в которые должна быть записана информация для каждой комбинации имени источника/регистратора и уровня журнала. Правила обрабатываются, начиная с первого в списке.  Каждая запись таблицы маршрутизации представляет собой секцию <logger />, в которой находятся следующие атрибуты:

name — Название источника или регистратора.

Может включать знак "*" — любая последовательность символов или "?" — любой одиночный символ. Таким образом, имя "*" соответствует любому имени журнала, а "Common*" соответствует всем экземплярам журнала, имена которых начинаются с "Common".

minlevel — Минимальный уровень журнала для соответствия правилу

maxlevel — Максимальный уровень журнала для соответствия правилу

level — Единый уровень журнала для соответствия правилу

levels — Список уровней журнала, разделенных запятыми, которым соответствует правило.

writeTo — Список целей, разделенных запятыми, которые должны быть записаны, когда применяется данное правило.

final — Сделать правило окончательным.

<extensions />

Загружает расширения NLog из файла *.dll.

<include />

Включает внешний файл конфигурации

<variable />

Устанавливает значение переменной конфигурации

Уровни (Level)

Каждому сообщению в журнале присвоен свой уровень (Level), он определяет его серьезность. Поддерживаются следующие уровни журнала:

Уровень

Описание

Fatal

Используется для сообщения об ошибках, вызывающих завершение работы приложения

Error

Используется для регистрации ошибок, возникающих во время работы приложения

Warn

Используется для сообщений о необычном поведении, которое не является критическим для работы приложения

Info

Используется для информационных сообщений о ходе выполнения приложения

Debug

Используется для отладки сообщений с расширенной информацией

Trace

Очень подробные сообщения журнала, потенциально с высокой частотой и объемом

Фильтры

Для правил <rules />  можно задать фильтр, он записывается в конфигурации следующим образом:

<rules>

 <logger name="*" minlevel="Info" writeTo="target1">

  <filters defaultAction='Log'>

    <when condition="contains('${message}','Common')" action="Ignore" />

   </filters>

 </logger>

</rules>

 

Результатом работы фильтра является значение типа FilterResult. Если условие фильтра возвращает true, то результатом работы фильтра становится значение, указанное в атрибуте action (в примере выше — Ignore). Если же условие возвращает false, то результатом работы фильтра будет Neutral.

Действие по умолчанию для фильтрации (при несоответствии ни одному правилу) устанавливается с помощью атрибута defaultAction у элемента filters (в примере выше — Log). Возможные значения:

Значение

Описание

Neutral

Нейтральное. Значение по умолчанию. От фильтра не будет зависеть действие с сообщением

Log

Сообщение будет записано в лог, обработка продолжится

LogFinal

Сообщение будет записано, NLog прекращает обработку

Ignore

Сообщение не будет записано в лог, обработка продолжится

IgnoreFinal

Сообщение не будет записано, NLog прекращает обработку

Результат работы фильтров вычисляется в методе GetFilterResult. Он равен результату работы первого фильтра, вернувшего не Neutral. Это означает, что если некоторый фильтр возвращает значение, отличное от Neutral, все последующие фильтры не выполняются.

warning_icon На серверах с TaskCenter рекомендуется использовать значение filters defaultAction="Neutral"

Layout Renderers

NLog поддерживает несколько пользовательских средств визуализации макета (Layout Renderers) в дополнение к стандартным средствам. Они могут быть включены в любую секцию и будут заменены соответствующим значением, если оно доступно.

Записываются в виде ${ }.  Пример:

<target name="f" xsi:type="File" filename="${shortdate}.txt" />

Настройки

warning_icon В таблице приведен не полный список настроек, он будет пополняться со временем

Настройка

Описание

writeErrorsToDB

Писать ошибки в БД. Если настройка активна, сообщения об ошибках будут сохраняться в БД, в таблице ExceptionsLog.

Значение по умолчанию — True.

< variable name="writeErrorsToDB" value="True" / >

writeErrorsToEventLog

Писать ошибки в Event Log сервера. Если настройка активна, ошибки можно просматривать через Event Viewer сервера приложения.

Значение по умолчанию — False.

< variable name="writeErrorsToEventLog" value="False" / >

mailErrors

Слать ошибки на почту. Если настройка активна, то сообщения об ошибках будут отправляться на почтовый ящик, указанный в общих настройках приложения как "Email для отправки ошибок".

Значение по умолчанию — False.

< variable name="mailErrors" value="False" / >

logLogicErrors

Писать в лог логические ошибки. Если настройка активна, в журнал ошибок будут писаться предупреждения из интерфейса пользователя (например, при попытке постановки задачи с незаполненным обязательным полем и т.п.)

Значение по умолчанию — True.

< variable name="logLogicErrors" value="True" / >

Полезные ссылки