Aracılığıyla paylaş


Uygulama günlüğü zenginleştiricisi

Uygulama günlüğü zenginleştiricisi, telemetri günlüklerini hizmet ana bilgisayarı ayrıntıları ve uygulama meta verileri gibi uygulamaya özgü bilgilerle genişletmektedir. Bu zenginleştirici, izleme, hata ayıklama ve işlem görünürlüğüne yardımcı olan uygulamanızın dağıtım ortamı, sürüm bilgileri ve hizmet kimliği hakkında temel bağlam sağlar.

Zenginleştiricileri bir IoC kapsayıcısına kaydedebilirsiniz ve tüm kayıtlı zenginleştiriciler, telemetri bilgilerini zenginleştirdikleri ilgili telemetri günlükleri tarafından otomatik olarak alınır.

Önkoşullar

Bu zenginleştiricinin düzgün çalışması için uygulama meta verilerinin yapılandırılması ve kullanılabilir olması gerekir. Uygulama meta verileri, zenginleştiricinin telemetri boyutlarını doldurmak için kullandığı temel bilgileri sağlar.

Paketi yükle

Başlamak için Microsoft.Extensions.Telemetry NuGet paketini yükleyin📦:

dotnet add package Microsoft.Extensions.Telemetry

Veya .NET 10+ SDK kullanıyorsanız:

dotnet package add Microsoft.Extensions.Telemetry

Adım adım yapılandırma

Uygulamanızda uygulama günlüğü zenginleştiricisini yapılandırmak için şu adımları izleyin:

1. Uygulama meta verilerini yapılandırma

İlk olarak, yöntemleri çağırarak Uygulama Meta Verileri'niUseApplicationMetadata yapılandırın:

var builder = Host.CreateApplicationBuilder(args);
builder.UseApplicationMetadata()

Bu yöntem, değerleri IHostEnvironment içinden otomatik olarak alır ve varsayılan yapılandırma bölümüne ambientmetadata:application kaydeder.

Alternatif olarak, uygulama meta verileri için bir yapılandırma sağlayıcısı kaydeden ve AddApplicationMetadata(IConfigurationBuilder, IHostEnvironment, String) değerlerini alarak verilen yapılandırma bölümü adına ekleyen IHostEnvironment yöntemini kullanabilirsiniz. AddApplicationMetadata(IServiceCollection, IConfigurationSection) yöntemini, meta verileri bağımlılık ekleme kapsayıcısına kaydetmek için kullanırsınız; bu da IConfigurationSection'i ayrı ayrı geçirmenizi sağlar.

var builder = Host.CreateApplicationBuilder(args)
    .ConfigureAppConfiguration(static (context, builder) =>
        builder.AddApplicationMetadata(context.HostingEnvironment));

builder.Services.AddApplicationMetadata(
    builder.Configuration.GetSection("ambientmetadata:application")));

2. Ek yapılandırma sağlayın (isteğe bağlı)

aracılığıyla appsettings.jsonek yapılandırma sağlayabilirsiniz. Uygulama Meta Verilerinde otomatik olarak değer almayan iki özellik vardır: BuildVersion ve DeploymentRing. Bunları kullanmak istiyorsanız, değerleri el ile sağlayın:

"AmbientMetadata": {
    "Application": {
        "DeploymentRing": "testring",
        "BuildVersion": "1.2.3"
    }
},

3. Uygulama günlüğü zenginleştiricisini kaydetme

AddApplicationLogEnricher(IServiceCollection) yöntemini çağırarak log zenginleştiricisini bağımlılık enjeksiyonu konteynerine kaydetmek için.

serviceCollection.AddApplicationLogEnricher();

Zenginleştiricinin tek tek seçeneklerini etkinleştirebilir veya devre dışı bırakabilirsiniz:

serviceCollection.AddApplicationLogEnricher(options =>
{
    options.BuildVersion = true;
    options.DeploymentRing = true;
});

Uyarı

.NET 9 veya önceki bir sürümü kullanıyorsanız, bunun yerine yöntemini çağırın AddServiceLogEnricher(IServiceCollection) .

Alternatif olarak, appsettings.json kullanarak seçenekleri yapılandırın.

"ApplicationLogEnricherOptions": {
    "BuildVersion": true,
    "DeploymentRing": true
}

Ardından yapılandırmayı uygulayın.

var builder = Host.CreateApplicationBuilder(args);
builder.Services.AddApplicationLogEnricher(builder.Configuration.GetSection("ApplicationLogEnricherOptions"));

ApplicationLogEnricherOptions yapılandırma seçenekleri

Uygulama günlüğü zenginleştiricisi, sınıfı aracılığıyla ApplicationLogEnricherOptions çeşitli yapılandırma seçeneklerini destekler:

Mülkiyet Varsayılan değer Boyut adı Description
EnvironmentName true deployment.environment Barındırma ortamından veya yapılandırmasından ortam adı
ApplicationName true service.name Barındırma ortamı veya yapılandırmadan uygulama adı
BuildVersion false service.version Yapılandırma tabanlı derleme sürümü
DeploymentRing false DeploymentRing Yapılandırma kaynaklı dağıtım halkası

Varsayılan olarak zenginleştirici, EnvironmentName ve ApplicationName öğelerini günlük kayıtlarına ekler. BuildVersion ve DeploymentRing özellikleri varsayılan olarak devre dışıdır ve gerekirse açıkça etkinleştirilmesi gerekir.

Tam örnek

Uygulama günlüğü zenginleştiricisinin nasıl ayarlandığını gösteren tam bir örnek aşağıda verilmiştir:

appsettings.json:

{
    "AmbientMetadata": {
        "Application": {
            "DeploymentRing": "testring",
            "BuildVersion": "1.2.3"
        }
    },
    "ApplicationLogEnricherOptions": {
        "BuildVersion": true,
        "DeploymentRing": true
    }
}

Program.cs:

using System.Text.Json;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;

var builder = Host.CreateApplicationBuilder(args);
builder.UseApplicationMetadata();
builder.Logging.EnableEnrichment();
builder.Logging.AddJsonConsole(op =>
{
    op.JsonWriterOptions = new JsonWriterOptions
    {
        Indented = true
    };
});
builder.Services.AddApplicationLogEnricher(builder.Configuration.GetSection("ApplicationLogEnricherOptions"));

var host = builder.Build();
var logger = host.Services.GetRequiredService<ILogger<Program>>();

logger.LogInformation("This is a sample log message");

await host.RunAsync();

Zenginleştirilmiş log çıkışı

Uygulama günlüğü zenginleştiricisi yapılandırıldığında, günlük çıkışınız hizmete özgü boyutlar içerir:

{
  "EventId": 0,
  "LogLevel": "Information",
  "Category": "Program",
  "Message": "This is a sample log message",
  "State": {
    "Message": "This is a sample log message",
    "service.name": "servicelogenricher",
    "deployment.environment": "Production",
    "DeploymentRing": "testring",
    "service.version": "1.2.3",
    "{OriginalFormat}": "This is a sample log message"
  }
}

Sonraki Adımlar