Zidium

Расширение NLog для Zidium позволяет отправлять из приложения в систему мониторинга следующие данные:

  1. Данные об ошибках
    Перед отправкой ошибки группируются, что позволяет экономить трафик. Данные об ошибках изменяют состояние компонента. Об изменении статуса компонента отправляются уведомления.

  2. Лог
    Лог не изменяет состояние компонента, используется только для чтения из личного кабинета.

Через расширение лога можно отправить только данные об ошибках и логи, если вам нужно отправлять результаты проверок или метрик, то нужно использовать Zidium API.

Для использования расширения лога выполните шаги:

1. Установите расширение лога

Рекомендуем устанавливать расширение через Nuget-пакет NLog.Zidium

PM > Install-Package NLog.Zidium

Исходный код расширения доступен на GitHub: https://github.com/Zidium/NLogAdapter

После установки пакета в приложение будет добавлено 2 файла:

Zidium.Api.dll – API системы мониторинга
NLog.ZidiumTarget.dll – расширение NLog

2. Настройте Zidium.config

Настройка Zidium API выполняется через файл Zidium.config, добавьте его к проекту (из-за ограничений Nuget 3 это невозможно сделать автоматически).

<?xml version="1.0" encoding="utf-8" ?>
<root>
    <access accountName="" secretKey="" />
    <defaultComponent id="" />
</root>

В файле нужно заполнить:

accountName - имя аккаунта (смотрите в Настройки — Аккаунт)

secretKey - секретный ключ (смотрите в Настройки — Аккаунт)

defaultComponent id - ID компонента по умолчанию, от имени которого будет происходить отправка данных приложения

3. Настройте NLog.config

Сборка NLog.ZidiumTarget.dll содержит две цели:

  • Zidium.Log используется для отправки лога в Zidium
  • Zidium.Errors используется для мониторинга ошибок

В файле конфигурации NLog (NLog.config) добавьте нужные вам target и rule и укажите в параметре componentId Id компонента из личного кабинета.
Можно не указывать componentId здесь, а задать его в разделе defaultComponent файла Zidium.config

Пример файла для записи ошибок и логов:

<?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"
      internalLogLevel="Trace" 
      internalLogFile="nlog-internal.log">
    <targets>
        <target name="ZidiumLog" xsi:type="Zidium.Log" componentId="7e977e31-4a97-440c-a185-eb89b523914d" />
        <target name="ZidiumErrors" xsi:type="Zidium.Errors" componentId="7e977e31-4a97-440c-a185-eb89b523914d" />
    </targets>
    <rules>
        <logger name="*" minlevel="Trace" writeTo="ZidiumLog" />
        <logger name="*" minlevel="Trace" writeTo="ZidiumErrors" />
    </rules>
</nlog>

4. Отправка ошибок в Zidium

Для отправки ошибок в Zidium - просто запишите ошибку в лог, например:

try
{
    ...
}
catch (Exception exception)
{
    var logger = LogManager.GetCurrentClassLogger();
    logger.Error(exception, "Комментарий к ошибке");
}

Вы можете указать дополнительные параметры ошибки:

exception.Data.Add("user", "vasya");
exception.Data.Add("ip", "192.168.1.1");
logger.Error(exception, "Комментарий к ошибке");

Чтобы посмотреть ошибки компонента, перейдите в раздел Ошибки личного кабинета и выберите нужный компонент.

Кликните по названию ошибки, чтобы увидеть более подробную информацию

5. Отправка логов в Zidium

Для отправки сообщений лога в Zidium - просто выполняется запись сообщений в лог:

var logger = LogManager.GetCurrentClassLogger();
logger.Info("My message");

Можно добавить к записи лога произвольные свойства:

var logger = LogManager.GetCurrentClassLogger();
var logEvent = new LogEventInfo(NLog.LogLevel.Info, logger.Name, "My message");
logEvent.Properties["Prop1"] = "Value1";
logEvent.Properties["Prop2"] = "Value2";
logger.Log(logEvent);

Чтобы посмотреть записи лога, перейдите в раздел Лог личного кабинета.
Выберите нужный компонент в списке и нажмите кнопку Найти.
Будут показаны записи лога по этому компоненту:

Кликнув по записи лога, можно посмотреть её свойства:

Используйте фильтры в верхней части страницы, чтобы отобрать записи лога, которые вам нужны.