/Документация

Конфигурация


Обязательные параметры

ПараметрТипОписание
ApiTokenstringТокен аутентификации (формат sdk_...)
OrganizationIdGuidID организации
ProjectIdGuidID проекта
SdkClientIdGuidID приложения (SDK-клиента)

Необязательные параметры

ПараметрТипПо умолчаниюОписание
BaseUrlUrihttps://sdk.enma.techБазовый URL Ingest API
BatchSizeint50Событий в одном HTTP-запросе (макс. 200)
FlushIntervalTimeSpan5 секИнтервал автоматической отправки
MaxQueueSizeint10 000Ёмкость ограниченной очереди
MaxRetriesint3Повторные попытки при 5xx / сетевых ошибках
DefaultTagsDictionary<string, string>{}Глобальные теги для всех событий
OnErrorActionnullCallback при ошибке доставки пакета

Полный пример

await using var enma = new EnmaClient(o =>
{
    // Обязательные
    o.ApiToken       = "sdk_your_token";
    o.OrganizationId = Guid.Parse("...");
    o.ProjectId      = Guid.Parse("...");
    o.SdkClientId    = Guid.Parse("...");

    // Транспорт
    o.BaseUrl       = new Uri("https://sdk.enma.tech"); // по умолчанию
    o.BatchSize     = 100;
    o.FlushInterval = TimeSpan.FromSeconds(10);
    o.MaxQueueSize  = 50_000;
    o.MaxRetries    = 5;

    // Глобальные теги
    o.DefaultTags["service"] = "order-api";
    o.DefaultTags["env"]     = "production";

    // Middleware
    o.Use(next => async (evt, ct) =>
    {
        evt.Tags ??= new Dictionary<string, string>();
        evt.Tags["host"] = Environment.MachineName;
        await next(evt, ct);
    });

    // Обработка ошибок
    o.OnError = (events, ex) =>
    {
        logger.LogError(ex, "Ошибка отправки {Count} событий", events.Count);
    };
});

Конфигурация через appsettings.json

При использовании ASP.NET Core параметры можно вынести в конфигурационный файл или переменные окружения:

{
  "Enma": {
    "ApiToken": "sdk_your_token",
    "OrganizationId": "...",
    "ProjectId": "...",
    "SdkClientId": "...",
    "BatchSize": 100,
    "MaxRetries": 5
  }
}
builder.Services.AddEnma(builder.Configuration.GetSection("Enma"));

Подробнее — ASP.NET Core интеграция.