Как подключить Serilog к .NET AspireC#

Место общения программистов C#
Ответить
Anonymous
 Как подключить Serilog к .NET Aspire

Сообщение Anonymous »

Я изо всех сил пытался получить Serilog , чтобы отправить телеметрию на панель Dashboard .net . После открытия панели Dashboard Aspire , вкладка «Структурированные журналы» всегда пуста. Code> (таким образом, используя ilogger ) по умолчанию ), тогда я начинаю видеть структурированные журналы на панели инструментов. Похоже, мне помогает: < /p>

serilog for .net aspire < /li>
Дубликационное имя службы при использовании журнала OTLP < /li >
< /ul>
Вот где наша конфигурация Serilog стоит на данный момент: < /p>

Код: Выделить всё

// This extension is auto generated when adding Aspire. More on that below..
builder.AddServiceDefaults();

builder.Host.UseSerilog((hostContext, services, loggerConfiguration) => loggerConfiguration
.ReadFrom.Configuration(builder.Configuration)
.Enrich.FromLogContext()
.Enrich.WithPropertiesMasking(builder.Configuration)
.Enrich.WithProperty("ServiceName", DaprConstants.API_SERVICE_NAME)
.Enrich.WithThreadId()
.Enrich.WithCorrelationIdHeader("X-Correlation-ID")
.WriteTo.ApplicationInsights
(
new TelemetryConfiguration() { ConnectionString = builder.Configuration["APPLICATIONINSIGHTS_CONNECTION_STRING"] },
TelemetryConverter.Traces
)
.WriteTo.OpenTelemetry(opts =>
{
opts.Endpoint = builder.Configuration["OTEL_EXPORTER_OTLP_ENDPOINT"]!;
opts.ResourceAttributes.Add("service.name", builder.Configuration["OTEL_SERVICE_NAME"] ?? "Unknown");
})
);
Если вы не знакомы с некоторыми из этих переменных среды, вы можете прочитать больше об этом здесь: .net aspire telemetry
из GitHub Проблемы, с которыми я связан выше. Я также изменил расширения в рамках проекта ServiceEfaults , который создается автоматически при добавлении Aspire в ваше приложение. Я должен отметить, что я также пытался сохранить всю конфигурацию в классе расширений то же самое.

Код: Выделить всё

public static class Extension
{
public static IHostApplicationBuilder AddServiceDefaults(this IHostApplicationBuilder builder)
{
builder.ConfigureOpenTelemetry();

/* Other configuration... */

return builder;
}

public static IHostApplicationBuilder ConfigureOpenTelemetry(this IHostApplicationBuilder builder)
{
// Tried commenting this out.
/*builder.Logging.AddOpenTelemetry(logging =>
{
logging.IncludeFormattedMessage = true;
logging.IncludeScopes = true;
});*/

builder.Services.AddOpenTelemetry()
.WithMetrics(metrics =>
{
metrics.AddAspNetCoreInstrumentation()
.AddHttpClientInstrumentation()
.AddRuntimeInstrumentation();
})
.WithTracing(tracing =>
{
if (builder.Environment.IsDevelopment())
{
// We want to view all traces in development
tracing.SetSampler(new AlwaysOnSampler());
}

tracing.AddAspNetCoreInstrumentation()
.AddHttpClientInstrumentation();
});

builder.AddOpenTelemetryExporters();

return builder;
}

private static IHostApplicationBuilder AddOpenTelemetryExporters(this IHostApplicationBuilder builder)
{
var useOtlpExporter = !string.IsNullOrWhiteSpace(builder.Configuration["OTEL_EXPORTER_OTLP_ENDPOINT"]);

if (useOtlpExporter)
{
// In one of the GitHub issues David Fowler suggested commenting this line out.
//builder.Services.Configure(logging => logging.AddOtlpExporter());
builder.Services.ConfigureOpenTelemetryMeterProvider(metrics => metrics.AddOtlpExporter());
builder.Services.ConfigureOpenTelemetryTracerProvider(tracing => tracing.AddOtlpExporter());
}

if (!string.IsNullOrEmpty(builder.Configuration["APPLICATIONINSIGHTS_CONNECTION_STRING"]))
{
builder.Services.AddOpenTelemetry()
.UseAzureMonitor();
}

return builder;
}
}
Я не показывал Apphost здесь, так как я не думал, что это имело значение для вышеупомянутого вопроса. В настоящее время пробует Aspire с Serilog, чтобы заставить это работать правильно?>

Подробнее здесь: https://stackoverflow.com/questions/783 ... net-aspire
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»