Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In diesem Artikel erfahren Sie, wie Sie Protokolle mit Application Insights in .NET-Apps mithilfe des Microsoft.Extensions.Logging.ApplicationInsights
-Anbieterpakets erfassen. Wenn Sie diesen Anbieter verwenden, können Sie Ihre Protokolle mithilfe der Application Insights-Tools abfragen und analysieren.
Achtung
Wir empfehlen die OpenTelemetry-Distribution von Azure Monitor für neue Anwendungen oder Kunden, um Azure Monitor Application Insights zu betreiben. Die OpenTelemetry-Distribution von Azure Monitor bietet eine ähnliche Funktionalität und Benutzererfahrung wie das Application Insights SDK. Es ist möglich, mithilfe der Migrationsleitfäden für .NET, Node.js und Python vom Application Insights SDK zu migrieren, wir arbeiten jedoch an der Integration zusätzlicher Funktionen für die Abwärtskompatibilität.
Hinweis
Wenn Sie den gesamten Umfang der Application Insights-Telemetriedaten zusammen mit der Protokollierung implementieren möchten, lesen Sie Konfigurieren von Application Insights für Ihre ASP.NET-Website oder Application Insights für ASP.NET Core-Anwendungen.
Tipp
Das NuGet-Paket Microsoft.ApplicationInsights.WorkerService
, das zum Aktivieren von Application Insights für Hintergrunddienste verwendet wird, liegt außerhalb des Bereichs. Weitere Informationen finden Sie unter Application Insights für Workerdienst-Apps.
ASP.NET Core-Anwendungen
So fügen Sie Application Insights-Protokollierung zu ASP.NET Core-Anwendungen hinzu:
Installieren Sie
Microsoft.Extensions.Logging.ApplicationInsights
.Fügen Sie
ApplicationInsightsLoggerProvider
hinzu:
using Microsoft.Extensions.Logging.ApplicationInsights;
var builder = WebApplication.CreateBuilder(args);
// Add services to the container.
builder.Services.AddControllers();
// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();
builder.Logging.AddApplicationInsights(
configureTelemetryConfiguration: (config) =>
config.ConnectionString = builder.Configuration.GetConnectionString("APPLICATIONINSIGHTS_CONNECTION_STRING"),
configureApplicationInsightsLoggerOptions: (options) => { }
);
builder.Logging.AddFilter<ApplicationInsightsLoggerProvider>("your-category", LogLevel.Trace);
var app = builder.Build();
// Configure the HTTP request pipeline.
if (app.Environment.IsDevelopment())
{
app.UseSwagger();
app.UseSwaggerUI();
}
app.UseHttpsRedirection();
app.UseAuthorization();
app.MapControllers();
app.Run();
Wenn das NuGet-Paket installiert ist und der Anbieter mit Abhängigkeitsinjektion registriert wird, kann die App Protokollierungen vornehmen. Bei Konstruktorinjektion ist entweder ILogger oder die generische Alternative ILogger<TCategoryName> erforderlich. Wenn diese Implementierungen aufgelöst werden, stellt ApplicationInsightsLoggerProvider
diese zur Verfügung. Protokollierte Meldungen oder Ausnahmen werden zu Application Insights gesendet.
Betrachten Sie den folgenden Beispielcontroller:
public class ValuesController : ControllerBase
{
private readonly ILogger _logger;
public ValuesController(ILogger<ValuesController> logger)
{
_logger = logger;
}
[HttpGet]
public ActionResult<IEnumerable<string>> Get()
{
_logger.LogWarning("An example of a Warning trace..");
_logger.LogError("An example of an Error level message");
return new string[] { "value1", "value2" };
}
}
Weitere Informationen finden Sie unter Protokollierung in ASP.NET Core und Welcher Application Insights-Telemetrietyp wird aus ILogger-Protokollen erstellt? Wo kann ich ILogger-Protokolle in Application Insights sehen?.
Konsolenanwendung
Um die Application Insights-Protokollierung zu Konsolenanwendungen hinzuzufügen, installieren Sie zuerst die folgenden NuGet-Pakete:
Im folgenden Beispiel wird das Paket Microsoft.Extensions.Logging.ApplicationInsights verwendet und das Standardverhalten für eine Konsolenanwendung veranschaulicht. Das Paket Microsoft.Extensions.Logging.ApplicationInsights sollte in einer Konsolenanwendung oder immer dann verwendet werden, wenn Sie eine Minimalimplementierung von Application Insights ohne den vollständigen Featuresatz wie Metriken, verteilte Ablaufverfolgung, Sampling und Telemetrieinitialisierer wünschen.
using Microsoft.ApplicationInsights.Channel;
using Microsoft.ApplicationInsights.Extensibility;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using var channel = new InMemoryChannel();
try
{
IServiceCollection services = new ServiceCollection();
services.Configure<TelemetryConfiguration>(config => config.TelemetryChannel = channel);
services.AddLogging(builder =>
{
// Only Application Insights is registered as a logger provider
builder.AddApplicationInsights(
configureTelemetryConfiguration: (config) => config.ConnectionString = "<YourConnectionString>",
configureApplicationInsightsLoggerOptions: (options) => { }
);
});
IServiceProvider serviceProvider = services.BuildServiceProvider();
ILogger<Program> logger = serviceProvider.GetRequiredService<ILogger<Program>>();
logger.LogInformation("Logger is working...");
}
finally
{
// Explicitly call Flush() followed by Delay, as required in console apps.
// This ensures that even if the application terminates, telemetry is sent to the back end.
channel.Flush();
await Task.Delay(TimeSpan.FromMilliseconds(1000));
}
Weitere Informationen finden Sie unter Welcher Application Insights-Telemetrietyp wird aus ILogger-Protokollen erstellt? Wo kann ich ILogger-Protokolle in Application Insights sehen?.
Protokollierungsbereiche
ApplicationInsightsLoggingProvider
unterstützt Protokollbereiche. Bereiche sind standardmäßig aktiviert.
Bei einem Bereich vom Typ IReadOnlyCollection<KeyValuePair<string,object>>
wird jedes Schlüssel-Wert-Paar in der Sammlung als benutzerdefinierte Eigenschaft zur Application Insights-Telemetrie hinzugefügt. Im folgenden Beispiel werden Protokolle als TraceTelemetry
aufgezeichnet und enthalten ("MyKey", "MyValue")
in den Eigenschaften.
using (_logger.BeginScope(new Dictionary<string, object> { ["MyKey"] = "MyValue" }))
{
_logger.LogError("An example of an Error level message");
}
Wenn ein anderer Typ als Umfang verwendet wird, wird er unter der Eigenschaft Scope
in der Application Insights-Telemetrie gespeichert. Im folgenden Beispiel verfügt TraceTelemetry
über eine Eigenschaft namens Scope
, die den Bereich enthält.
using (_logger.BeginScope("hello scope"))
{
_logger.LogError("An example of an Error level message");
}
Nächste Schritte
- Informationen zum Überprüfen häufig gestellter Fragen (FAQ) finden Sie unter Protokollierung mit .NET FAQ
- Überprüfen Sie, ob Sie eine unterstützte Version des Application Insights SDK ausführen.
- Protokollierung in .NET
- Protokollierung in ASP.NET Core
- .NET-Ablaufverfolgungsprotokolle in Application Insights