Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
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
- Uygulama meta veri yapılandırması hakkında bilgi edinin