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.
Microsoft.Extensions.AmbientMetadata.Application NuGet paketi, uygulama genelinde uygulama düzeyindeki ortam meta verilerini yakalamak ve akışa almak için işlevsellik sağlar. Bu meta veriler, telemetriyi, sorun gidermeyi ve çözümlemeyi zenginleştirmek için değerli olan uygulama adı, sürüm, dağıtım ortamı ve dağıtım halkası gibi bilgileri içerir.
Uygulama meta verilerini neden kullanmalısınız?
Uygulama meta verileri, çalışan uygulamanız hakkında gözlemlenebilirliği geliştirebilecek temel bağlam sağlar:
- Telemetri zenginleştirmesi: Günlüklere, ölçümlere ve izlemelere uygulama ayrıntılarını otomatik olarak ekleyin.
- Sorun giderme: Uygulamanızın hangi sürümünde sorun yaşandığını hızla belirleyin.
- Ortam belirleme: Telemetrinizdeki farklı ortamları ayırt edin.
- Dağıtım izleme: Farklı dağıtım halkaları veya bölgelerdeki sorunları izleyin.
- Tutarlı meta veriler: Uygulamanızdaki tüm bileşenlerin aynı meta veri değerlerini kullandığından emin olun.
Paketi yükle
Başlamak için Microsoft.Extensions.AmbientMetadata.Application NuGet paketini yükleyin📦:
dotnet add package Microsoft.Extensions.AmbientMetadata.Application
Veya .NET 10+ SDK kullanıyorsanız:
dotnet package add Microsoft.Extensions.AmbientMetadata.Application
Uygulama meta verilerini yapılandırma
Uygulama meta verileri, uygulamanızın yapılandırma sistemi aracılığıyla yapılandırılabilir. Paket varsayılan olarak yapılandırma bölümünün altında ambientmetadata:application meta verileri arar.
appsettings.json ile yapılandırma
Uygulama meta verilerini dosyanıza appsettings.json ekleyin:
{
"ambientmetadata": {
"application": {
"ApplicationName": "MyWebApi",
"BuildVersion": "1.0.0",
"DeploymentRing": "Production",
"EnvironmentName": "Production"
}
}
}
IHostBuilder ile yapılandırma
UseApplicationMetadata uzantılar yöntemini kullanarak uygulama meta verilerini kaydedin; bu, ApplicationName'den gelen EnvironmentName ve IHostEnvironment değerlerini otomatik olarak doldurur.
İsteğe bağlı olarak, BuildVersion ve DeploymentRing için değerleri appsettings.json dosyası aracılığıyla sağlayabilirsiniz.
Aşağıdaki tabloda, IConfiguration aracılığıyla sağlayıcı tarafından sağlanan meta veriler gösterilmektedir.
| Key | Gerekli mi? | Değerin geldiği yer | Değer örneği | Description |
|---|---|---|---|---|
ambientmetadata:application:applicationname |
yes | otomatik olarak IHostEnvironment |
myApp |
Uygulama adı. |
ambientmetadata:application:environmentname |
yes | otomatik olarak IHostEnvironment |
Production, Development |
Uygulamanın dağıtılacağı ortam. |
ambientmetadata:application:buildversion |
no |
IConfiguration içinde yapılandırın |
1.0.0-rc1 |
Uygulamanın derleme sürümü. |
ambientmetadata:application:deploymentring |
no |
IConfiguration içinde yapılandırın |
r0, public |
Uygulamanın çalıştığı dağıtım halkası. |
var builder = Host.CreateDefaultBuilder(args)
// ApplicationName and EnvironmentName will be imported from `IHostEnvironment`.
// BuildVersion and DeploymentRing will be imported from the "appsettings.json" file.
builder.UseApplicationMetadata();
var host = builder.Build();
await host.StartAsync();
var metadataOptions = host.Services.GetRequiredService<IOptions<ApplicationMetadata>>();
var buildVersion = metadataOptions.Value.BuildVersion;
Alternatif olarak, bunu yaparak yukarıdakiyle aynı sonucu elde edebilirsiniz:
var builder = Host.CreateApplicationBuilder()
.ConfigureAppConfiguration(static (context, builder) =>
builder.AddApplicationMetadata(context.HostingEnvironment));
builder.Services.AddApplicationMetadata(
builder.Configuration.GetSection("ambientmetadata:application")));
var host = builder.Build();
var metadataOptions = host.Services.GetRequiredService<IOptions<ApplicationMetadata>>();
var buildVersion = metadataOptions.Value.BuildVersion;
Bölümünüz appsettings.json aşağıdaki gibi olabilir:
"AmbientMetadata": {
"Application": {
"DeploymentRing": "testring",
"BuildVersion": "1.2.3"
}
}
IHostApplicationBuilder ile yapılandırma
kullanan IHostApplicationBuilderuygulamalar için:
var builder = Host.CreateApplicationBuilder(args)
// ApplicationName and EnvironmentName will be imported from `IHostEnvironment`.
// BuildVersion and DeploymentRing will be imported from the "appsettings.json" file.
builder.UseApplicationMetadata();
var host = builder.Build();
await host.StartAsync();
var metadataOptions = host.Services.GetRequiredService<IOptions<ApplicationMetadata>>();
var buildVersion = metadataOptions.Value.BuildVersion;
Bölümünüz appsettings.json aşağıdaki gibi olabilir:
"AmbientMetadata": {
"Application": {
"DeploymentRing": "testring",
"BuildVersion": "1.2.3"
}
}
Uygulama meta verilerine erişme
Yapılandırıldıktan sonra ApplicationMetadata türünü ekleyebilir ve kullanabilirsiniz.
using Microsoft.Extensions.AmbientMetadata;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Options;
var builder = Host.CreateApplicationBuilder(args);
builder.UseApplicationMetadata();
var host = builder.Build();
var metadata = host.Services.GetRequiredService<IOptions<ApplicationMetadata>>().Value;
Console.WriteLine($"Application: {metadata.ApplicationName}");
Console.WriteLine($"Version: {metadata.BuildVersion}");
Console.WriteLine($"Environment: {metadata.EnvironmentName}");
Console.WriteLine($"Deployment Ring: {metadata.DeploymentRing}");
await host.RunAsync();
ApplicationMetadata özellikleri
ApplicationMetadata sınıfı aşağıdaki özellikleri içerir:
| Mülkiyet | Description |
|---|---|
ApplicationName |
Uygulamanın adı. |
BuildVersion |
Uygulama yapısının sürümü. |
DeploymentRing |
Dağıtım halkası veya aşaması (örneğin, Kanarya, Üretim). |
EnvironmentName |
Uygulamanın çalıştığı ortam (örneğin, Geliştirme, Hazırlama, Üretim). |
Günlüğe kaydetme ile kullanma
Uygulama meta verileri özellikle günlük iletilerini zenginleştirmek için kullanışlıdır:
using Microsoft.Extensions.AmbientMetadata;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;
var builder = Host.CreateApplicationBuilder(args);
builder.UseApplicationMetadata();
builder.Services.AddSingleton<LoggingService>();
var host = builder.Build();
var loggingService = host.Services.GetRequiredService<LoggingService>();
loggingService.LogWithMetadata();
await host.RunAsync();
public class LoggingService(
ILogger<LoggingService> logger,
IOptions<ApplicationMetadata> metadata)
{
private readonly ILogger<LoggingService> _logger = logger;
private readonly ApplicationMetadata _metadata = metadata.Value;
public void LogWithMetadata()
{
_logger.LogInformation(
"Processing request in {ApplicationName} v{Version} ({Environment})",
_metadata.ApplicationName,
_metadata.BuildVersion,
_metadata.EnvironmentName);
}
}
Özel yapılandırma bölümü
Farklı bir yapılandırma bölümü adı kullanmayı tercih ediyorsanız, UseApplicationMetadata<TBuilder>(TBuilder, String) öğesini çağırırken belirtin:
using Microsoft.Extensions.Hosting;
var builder = Host.CreateApplicationBuilder(args);
// Use custom configuration section
builder.UseApplicationMetadata("myapp:metadata");
var host = builder.Build();
await host.RunAsync();
Bu yapılandırmayla, ayarlarınız şöyle görünür:
{
"myapp": {
"metadata": {
"ApplicationName": "MyWebApi", // ApplicationName will be imported from `IHostEnvironment`.
"BuildVersion": "1.0.0",
"DeploymentRing": "Production",
"EnvironmentName": "Production" // EnvironmentName will be imported from `IHostEnvironment`.
}
}
}