Я использую OTEL (OpenTelemetry) для ведения журналов и отправки журналов и показателей в Application Insights. Вот как я настраиваю логирование в OTEL:
public static class OpenTelemetrySetup
{
public static IOpenTelemetryBuilder AddOpenTelemetryDefaults(this IServiceCollection service, IConfiguration configuration)
{
if(options.LoggingOptions.LogExporters.Length > 0) {
service.AddLogging(logging =>
{
if(options.LoggingOptions.ClearProviders)
{
logging.ClearProviders();
}
logging.AddFilter("Case", LogLevel.Information);
logging.AddOpenTelemetry(openTelLogOptions =>
{
openTelLogOptions
.SetLoggingOptionsFromConfig(options.LoggingOptions)
.AddLogExportersFromConfig(options);
});
});
}
}
}
Я вызываю вышеуказанный метод из класса запуска веб-API.
// OTEL
services.AddLogging(logging => logging.AddConfiguration(context.Configuration.GetSection("Logging")));
IOpenTelemetryBuilder otelBuilder = services.AddOpenTelemetryDefaults(configService).WithTracing(tracingOptions => { tracingOptions.AddProcessor(new CodeProcessor()); });
otelBuilder.WithNoTracingForStaticFiles();
otelBuilder.WithNoTracingForDependencyHealthEndpoints();
Файл Appsetting Json, в котором я устанавливаю уровни ведения журнала по умолчанию:
"LogLevel": {
"Default": "Warning",
"Microsoft": "Critical",
"Microsoft.Hosting.Lifetime": "Critical",
"MyNameSpace.MyMethod": "Information"
}
У самого OTEL также есть собственный файл settings.json.
Все предупреждения от MyMethod обрабатываются вошел в систему Application Insights,
так как уровень журнала по умолчанию установлен на «Предупреждение». Однако
информационные сообщения не регистрируются, несмотря на переопределение
уровня журнала по умолчанию.
Пример журнала моего метода :
MyMethod{
this.logger.LogWarningWithProperties($"message", properties); // Works
this.logger.LogInformationWithProperties($"message", properties); // Not working
}
Подробнее здесь: https://stackoverflow.com/questions/791 ... tion-is-sp