Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Het Microsoft.Extensions.AmbientMetadata.Application NuGet-pakket biedt functionaliteit voor het vastleggen en stromen van omgevingsmetagegevens op toepassingsniveau in uw toepassing. Deze metagegevens bevatten informatie zoals de toepassingsnaam, versie, implementatieomgeving en implementatiering, wat waardevol is voor het verrijken van telemetrie, probleemoplossing en analyse.
Waarom metagegevens van toepassingen gebruiken
Toepassingsmetagegevens bieden essentiële context over uw actieve toepassing die de waarneembaarheid kan verbeteren:
- Telemetrieverrijking: voeg automatisch toepassingsgegevens toe aan logboeken, metrische gegevens en traceringen.
- Probleemoplossing: Identificeer snel welke versie van uw toepassing problemen ondervindt.
- Omgevingsidentificatie: Onderscheid maken tussen verschillende omgevingen in uw telemetrie.
- Implementatietracering: houd problemen bij in verschillende implementatieringen of regio's.
- Consistente metagegevens: zorg ervoor dat alle onderdelen in uw toepassing dezelfde metagegevenswaarden gebruiken.
Installeer het pakket
Installeer het NuGet-pakket Microsoft.Extensions.AmbientMetadata.Application NuGet om aan de📦 slag te gaan:
dotnet add package Microsoft.Extensions.AmbientMetadata.Application
Of als u .NET 10+ SDK gebruikt:
dotnet package add Microsoft.Extensions.AmbientMetadata.Application
Toepassingsmetagegevens configureren
Toepassingsmetagegevens kunnen worden geconfigureerd via het configuratiesysteem van uw toepassing. Het pakket zoekt standaard naar metagegevens in de ambientmetadata:application configuratiesectie.
Configureren met appsettings.json
Voeg de metagegevens van de toepassing toe aan uw appsettings.json bestand:
{
"ambientmetadata": {
"application": {
"ApplicationName": "MyWebApi",
"BuildVersion": "1.0.0",
"DeploymentRing": "Production",
"EnvironmentName": "Production"
}
}
}
Configureren met IHostBuilder
Gebruik de UseApplicationMetadata uitbreidingsmethode om metagegevens van toepassingen te registreren, waarmee ApplicationName- en EnvironmentName-waarden automatisch worden ingevuld vanaf IHostEnvironment.
U kunt eventueel waarden voor BuildVersion en DeploymentRing via het appsettings.json bestand opgeven.
In de volgende tabel ziet u de metagegevens die door de provider beschikbaar worden gesteld via IConfiguration:
| Key | Vereist? | Waar de waarde vandaan komt | Voorbeeld van waarde | Description |
|---|---|---|---|---|
ambientmetadata:application:applicationname |
yes | automatisch van IHostEnvironment |
myApp |
De naam van de toepassing. |
ambientmetadata:application:environmentname |
yes | automatisch van IHostEnvironment |
Production, Development |
De omgeving waar de toepassing naar wordt geïmplementeerd. |
ambientmetadata:application:buildversion |
no | configureren in IConfiguration |
1.0.0-rc1 |
De buildversie van de toepassing. |
ambientmetadata:application:deploymentring |
no | configureren in IConfiguration |
r0, public |
De implementatiering van waaruit de toepassing wordt uitgevoerd. |
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;
U kunt ook hetzelfde resultaat bereiken als hierboven:
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;
U appsettings.json kunt als volgt een sectie hebben:
"AmbientMetadata": {
"Application": {
"DeploymentRing": "testring",
"BuildVersion": "1.2.3"
}
}
Configureren met IHostApplicationBuilder
Voor toepassingen die gebruikmaken van IHostApplicationBuilder:
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;
U appsettings.json kunt als volgt een sectie hebben:
"AmbientMetadata": {
"Application": {
"DeploymentRing": "testring",
"BuildVersion": "1.2.3"
}
}
Toegang tot toepassingsmetagegevens
Zodra dit is geconfigureerd, kunt u het ApplicationMetadata type injecteren en gebruiken:
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-eigenschappen
De ApplicationMetadata klasse bevat de volgende eigenschappen:
| Vastgoed | Description |
|---|---|
ApplicationName |
De naam van de toepassing. |
BuildVersion |
De buildversie van de applicatie. |
DeploymentRing |
De uitrolring of fase (bijvoorbeeld Canary, productie). |
EnvironmentName |
De omgeving waarin de toepassing wordt uitgevoerd (bijvoorbeeld Ontwikkeling, Fasering, Productie). |
Gebruiken met logboekregistratie
Toepassingsmetagegevens zijn met name handig voor het verrijken van logboekberichten:
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);
}
}
Aangepaste configuratiesectie
Als u liever een andere configuratiesectienaam gebruikt, geeft u deze op bij het aanroepen UseApplicationMetadata<TBuilder>(TBuilder, String):
using Microsoft.Extensions.Hosting;
var builder = Host.CreateApplicationBuilder(args);
// Use custom configuration section
builder.UseApplicationMetadata("myapp:metadata");
var host = builder.Build();
await host.RunAsync();
Met deze configuratie zien uw instellingen er als volgt uit:
{
"myapp": {
"metadata": {
"ApplicationName": "MyWebApi", // ApplicationName will be imported from `IHostEnvironment`.
"BuildVersion": "1.0.0",
"DeploymentRing": "Production",
"EnvironmentName": "Production" // EnvironmentName will be imported from `IHostEnvironment`.
}
}
}