NLog¶
ℹ️ NLog — библиотека .NET, необходимая для логирования приложений в случаях, когда причину некорректного поведения в системе нельзя определить без дополнительной диагностики. Процесс логирования не вмешивается в работу приложения и не влияет на нее, но создает специальный журнал, в котором хранится информация о состоянии работы приложения
Настройка осуществляется через конфигурационный файл NLog.config. Стандартный Nlog отличается в зависимости от типа (.NET Core/TC) и ОС (Win/Linux):
-
NLog-Win-TC.config
-
NLog-Win.config
-
NLog-Linux.config
По умолчанию файл находится в C:\inetpub\wwwroot и каждый раз заменяется на стандартный при накате приложения. Как правило, изменение файла не требует перезапуска пула.
NLog.config для всех инстансов является универсальным и единым. Используется конфигурационный файл, который находится в репозитории и автоматически включается во все сборки. Кастомизация файла на площадках IIS и в контейнерах не предусмотрена.
Элементы конфигурации¶
Вы можете использовать следующие элементы в качестве дочерних элементов для
| Элемент | Описание |
|---|---|
| Определяет цели/выходы журнала. Для каждой цели требуется два атрибута: , name — Название цели , type — Тип цели, например: "File", "Database", "Mail ". При использовании пространств имен этот атрибут называется xsi:type. | |
| Определяет правила маршрутизации журналов, в которые должна быть записана информация для каждой комбинации имени источника/регистратора и уровня журнала. Правила обрабатываются, начиная с первого в списке. Каждая запись таблицы маршрутизации представляет собой секцию |
|
| Загружает расширения NLog из файла *.dll. | |
| Включает внешний файл конфигурации | |
| Устанавливает значение переменной конфигурации |
Уровни (Level)¶
Каждому сообщению в журнале присвоен свой уровень (Level), он определяет его серьезность. Поддерживаются следующие уровни журнала:
| Уровень | Описание |
|---|---|
| Fatal | Используется для сообщения об ошибках, вызывающих завершение работы приложения |
| Error | Используется для регистрации ошибок, возникающих во время работы приложения |
| Warn | Используется для сообщений о необычном поведении, которое не является критическим для работы приложения |
| Info | Используется для информационных сообщений о ходе выполнения приложения |
| Debug | Используется для отладки сообщений с расширенной информацией |
| Trace | Очень подробные сообщения журнала, потенциально с высокой частотой и объемом |
Фильтры¶
Для правил
<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, все последующие фильтры не выполняются.
ℹ️ На серверах с TaskCenter рекомендуется использовать значение filters defaultAction="Neutral"
Layout Renderers¶
NLog поддерживает несколько пользовательских средств визуализации макета (Layout Renderers) в дополнение к стандартным средствам. Они могут быть включены в любую секцию и будут заменены соответствующим значением, если оно доступно.
Записываются в виде ${ }. Пример:
<target name="f" xsi:type="File" filename="${shortdate}.txt" />
Настройки¶
ℹ️ В таблице приведен не полный список настроек, он будет пополняться со временем
| Настройка | Описание |
|---|---|
| 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" / > |