Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Ebben a cikkben megtudhatja, hogyan rögzíthet naplókat az Application Insights segítségével a .NET-alkalmazásokban a Microsoft.Extensions.Logging.ApplicationInsights
szolgáltatói csomag használatával. Ha ezt a szolgáltatót használja, az Application Insights eszközeivel lekérdezheti és elemezheti a naplókat.
Figyelemfelhívás
Javasoljuk az Azure Monitor OpenTelemetry Distro használatát az új alkalmazások vagy ügyfelek számára az Azure Monitor Application Insights használatához. Az Azure Monitor OpenTelemetry Distro az Application Insights SDK-hoz hasonló funkciókat és élményt nyújt. Az Application Insights SDK-ból a .NET, a Node.js és a Python áttelepítési útmutatóival migrálható, de még dolgozunk néhány további funkció hozzáadásán a visszamenőleges kompatibilitás érdekében.
Tipp.
- Alapértelmezés szerint az Application Insights-szolgáltató csak olyan naplókat küld, amelyek súlyossága
Warning
vagy annál magasabb. AInformation
vagy alacsonyabb szintű naplók belefoglalásához frissítse a(z)appsettings.json
naplószint beállításait. - Ha az Application Insights telemetriai adatainak teljes körét szeretné implementálni a naplózással együtt, olvassa el az Application Insights konfigurálása ASP.NET webhelyekhez vagy az Application Insights ASP.NET Core-alkalmazásokhoz című témakört.
- Az
Microsoft.ApplicationInsights.WorkerService
Application Insights háttérszolgáltatásokhoz való engedélyezéséhez használt NuGet-csomag hatókörén kívül esik. További információkért tekintse meg az Application Insights for Worker Service alkalmazások oldalt.
ASP.NET Core-alkalmazások
Application Insights-naplózás hozzáadása ASP.NET Core-alkalmazásokhoz:
Telepítse a
Microsoft.Extensions.Logging.ApplicationInsights
.Adja hozzá
ApplicationInsightsLoggerProvider
:
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();
Ha telepítve van a NuGet-csomag, és a szolgáltató regisztrálva van a függőséginjektálással, az alkalmazás készen áll a naplózásra. Konstruktorinjektálás esetén szükséges, hogy vagy ILogger, vagy az általános típusú alternatíva ILogger<TCategoryName> legyen megadva. Ha ezek a megvalósítások megoldódnak, ApplicationInsightsLoggerProvider
adja meg őket. A rendszer naplózott üzeneteket vagy kivételeket küld az Application Insightsnak.
Vegye figyelembe a következő példavezérlőt:
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" };
}
}
További információ: Naplózás ASP.NET Core és Milyen Application Insights-telemetriatípus jön létre az ILogger-naplókból? Hol láthatom az ILogger-naplókat az Application Insightsban?
Konzolalkalmazás
Az Application Insights-naplózás konzolalkalmazásokhoz való hozzáadásához először telepítse a következő NuGet-csomagokat:
Az alábbi példa a Microsoft.Extensions.Logging.ApplicationInsights csomagot használja, és bemutatja a konzolalkalmazások alapértelmezett viselkedését. A Microsoft.Extensions.Logging.ApplicationInsights csomagot egy konzolalkalmazásban kell használni, vagy amikor az Application Insights minimális implementációját szeretné elérni a teljes funkciókészlet nélkül, például metrikák, elosztott nyomkövetés, mintavételezés és telemetriai inicializálók nélkül.
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));
}
További információ: Milyen Application Insights-telemetriatípus jön létre az ILogger-naplókból? Hol láthatom az ILogger-naplókat az Application Insightsban?
Naplózási hatókörök
ApplicationInsightsLoggingProvider
támogatja a naplózási hatóköreit. A hatókörök alapértelmezés szerint engedélyezve vannak.
Ha a hatókör típusa IReadOnlyCollection<KeyValuePair<string,object>>
, akkor a gyűjteményben lévő kulcs-érték párok egyéni tulajdonságokként lesznek hozzáadva az Application Insights telemetriai adataihoz. Az alábbi példában a naplók mint TraceTelemetry
vannak rögzítve, és ("MyKey", "MyValue")
szerepel a tulajdonságokban.
using (_logger.BeginScope(new Dictionary<string, object> { ["MyKey"] = "MyValue" }))
{
_logger.LogError("An example of an Error level message");
}
Ha bármilyen más típust használ hatókörként, a rendszer az Application Insights telemetriai tulajdonsága Scope
alatt tárolja. Az alábbi példában a TraceTelemetry
rendelkezik egy Scope
nevű tulajdonsággal, amely tartalmazza a hatókört.
using (_logger.BeginScope("hello scope"))
{
_logger.LogError("An example of an Error level message");
}
Következő lépések
- A gyakori kérdések (GYIK) áttekintéséhez lásd: Naplózás a .NET-tel – gyakori kérdések
- Ellenőrizze, hogy az Application Insights SDK támogatott verzióját futtatja-e .
- Naplózás a .NET-ben
- Bejelentkezés a ASP.NET Core-ban
- .NET-nyomkövetési naplók az Application Insightsban