Acara
17 Mar, 21 - 21 Mar, 10
Bergabunglah dengan seri meetup untuk membangun solusi AI yang dapat diskalakan berdasarkan kasus penggunaan dunia nyata dengan sesama pengembang dan pakar.
Daftar sekarangBrowser ini sudah tidak didukung.
Mutakhirkan ke Microsoft Edge untuk memanfaatkan fitur, pembaruan keamanan, dan dukungan teknis terkini.
Dalam artikel ini, Anda mempelajari cara mengambil log dengan Application Insights di aplikasi .NET dengan menggunakan Microsoft.Extensions.Logging.ApplicationInsights
paket penyedia. Jika menggunakan penyedia ini, Anda dapat membuat kueri dan menganalisis log menggunakan alat Application Insights.
Perhatian
Kami merekomendasikan Distro OpenTelemetry Azure Monitor untuk aplikasi atau pelanggan baru untuk mendukung Azure Monitor Application Insights. Distro OpenTelemetry Azure Monitor memberikan fungsionalitas dan pengalaman serupa seperti Application Insights SDK. Dimungkinkan untuk bermigrasi dari Application Insights SDK menggunakan panduan migrasi untuk .NET, Node.js, dan Python, tetapi kami masih berupaya menambahkan beberapa fitur lagi untuk kompatibilitas mundur.
Catatan
Jika Anda ingin menerapkan berbagai telemetri Application Insights bersama dengan pengelogan, lihat Mengonfigurasi Application Insights untuk situs web ASP.NET atau Application Insights untuk aplikasi ASP.NET Core.
Tip
Paket Microsoft.ApplicationInsights.WorkerService
NuGet, yang digunakan untuk mengaktifkan Application Insights untuk layanan latar belakang, berada di luar cakupan. Untuk informasi selengkapnya, lihat Application Insights untuk aplikasi Layanan Pekerja.
Untuk menambahkan pengelogan Application Insights ke aplikasi ASP.NET Core:
Tambahkan 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();
Dengan paket NuGet terinstal dan penyedia yang terdaftar dengan injeksi dependensi, aplikasi siap untuk mencatat. Dengan injeksi konstruktor, diperlukan ILogger atau alternatif jenis generik ILogger<TCategoryName>. Ketika implementasi ini diselesaikan, ApplicationInsightsLoggerProvider
berikan. Pesan atau pengecualian yang dicatat dikirim ke Application Insights.
Perhatikan contoh pengontrol berikut:
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" };
}
}
Untuk informasi selengkapnya, lihat Pengelogan di ASP.NET Core dan Jenis telemetri Application Insights apa yang dihasilkan dari log ILogger? Di mana saya dapat melihat log ILogger di Application Insights?.
Untuk menambahkan pengelogan Application Insights ke aplikasi konsol, pertama-tama instal paket NuGet berikut:
Contoh berikut menggunakan paket Microsoft.Extensions.Logging.ApplicationInsights dan menunjukkan perilaku default untuk aplikasi konsol. Paket Microsoft.Extensions.Logging.ApplicationInsights harus digunakan dalam aplikasi konsol atau setiap kali Anda menginginkan implementasi minimum Application Insights tanpa set fitur lengkap seperti metrik, pelacakan terdistribusi, pengambilan sampel, dan penginisialisasi telemetri.
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));
}
Untuk informasi selengkapnya, lihat Jenis telemetri Application Insights apa yang dihasilkan dari log ILogger? Di mana saya dapat melihat log ILogger di Application Insights?.
ApplicationInsightsLoggingProvider
mendukung cakupan log. Cakupan diaktifkan secara default.
Jika cakupan berdasarkan jenis IReadOnlyCollection<KeyValuePair<string,object>>
, setiap pasangan nilai kunci dalam koleksi ditambahkan ke telemetri Application Insights sebagai properti kustom. Dalam contoh berikut, log diambil sebagai TraceTelemetry
dan memiliki ("MyKey", "MyValue")
di properti.
using (_logger.BeginScope(new Dictionary<string, object> { ["MyKey"] = "MyValue" }))
{
_logger.LogError("An example of an Error level message");
}
Jika ada jenis lain yang digunakan sebagai cakupan, jenis tersebut akan disimpan di bawah properti Scope
dalam telemetri Application Insights. Dalam contoh berikut, TraceTelemetry
memiliki properti yang disebut Scope
yang berisi cakupan.
using (_logger.BeginScope("hello scope"))
{
_logger.LogError("An example of an Error level message");
}
ApplicationInsightsLoggerProvider
mengambil ILogger
log dan membuat TraceTelemetry
darinya. Jika objek Exception
dilweatkan ke metode Log
pada ILogger
, ExceptionTelemetry
dibuat dan bukan TraceTelemetry
.
Melihat Telemetri ILogger
Di portal Microsoft Azure:
traces
disimpan dalam tabel.
Contoh Kueri: traces | where message contains "YourSearchTerm"
.Di Visual Studio (Debugger Lokal):
Jika Anda lebih suka selalu mengirimTraceTelemetry
, gunakan cuplikan ini:
builder.AddApplicationInsights(
options => options.TrackExceptionsAsExceptionTelemetry = false);
Application Insights mengambil dan mengirim log ILogger
dengan menggunakan informasi TelemetryConfiguration
yang sama yang digunakan untuk telemetri lainnya. Tapi ada pengecualian. Secara default, TelemetryConfiguration
tidak sepenuhnya diatur saat Anda mencatat dari Program.cs atau Startup.cs. Log dari tempat-tempat ini tidak memiliki konfigurasi default, sehingga tidak menjalankan semua TelemetryInitializer
instans dan TelemetryProcessor
instans.
Ketika Anda menggunakan paket mandiri, TelemetryClient
tidak disuntikkan ke kontainer injeksi dependensi (DI). Anda perlu membuat instans baru TelemetryClient
dan menggunakan konfigurasi yang sama dengan yang digunakan penyedia logger, seperti yang ditunjukkan oleh kode berikut. Ini memastikan bahwa konfigurasi yang sama digunakan untuk semua telemetri kustom serta telemetri dari ILogger
.
public class MyController : ApiController
{
// This TelemetryClient instance can be used to track additional telemetry through the TrackXXX() API.
private readonly TelemetryClient _telemetryClient;
private readonly ILogger _logger;
public MyController(IOptions<TelemetryConfiguration> options, ILogger<MyController> logger)
{
_telemetryClient = new TelemetryClient(options.Value);
_logger = logger;
}
}
Catatan
Jika Anda menggunakan Microsoft.ApplicationInsights.AspNetCore
paket untuk mengaktifkan Application Insights, ubah kode ini untuk mendapatkan TelemetryClient
langsung masuk ke konstruktor.
Ekstensi Application Insights di Azure Web Apps menggunakan penyedia baru. Anda dapat mengubah aturan pemfilteran di appsettings.json file untuk aplikasi Anda.
Acara
17 Mar, 21 - 21 Mar, 10
Bergabunglah dengan seri meetup untuk membangun solusi AI yang dapat diskalakan berdasarkan kasus penggunaan dunia nyata dengan sesama pengembang dan pakar.
Daftar sekarangPelatihan
Modul
Menggunakan telemetri dalam proyek .NET Aspire - Training
Dalam modul ini, Anda akan mempelajari tentang menggunakan telemetri untuk merekam perilaku aplikasi cloud-native dan bagaimana tumpukan .NET Aspire membuatnya lebih mudah menyimpan data dan melihatnya nanti.
Dokumentasi
Application Insights untuk aplikasi ASP.NET Core - Azure Monitor
Pantau aplikasi web ASP.NET Core untuk ketersediaan, performa, dan penggunaan.
Mengonfigurasikan pemantauan untuk ASP.NET dengan Azure Application Insights - Azure Monitor
Mengonfigurasikan alat analisis performa, ketersediaan, dan perilaku pengguna untuk situs web ASP.NET Anda yang dihosting secara lokal atau di Azure.
Jelajahi log jejak .NET di Application Insights - Azure Monitor
Log pencarian yang dihasilkan oleh Trace, NLog, atau Log4Net.