Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Questo articolo illustra come acquisire i log con Application Insights nelle app .NET usando il pacchetto del provider Microsoft.Extensions.Logging.ApplicationInsights
. Se si usa questo provider, è possibile eseguire query sui log e analizzarli usando gli strumenti di Application Insights.
Attenzione
È consigliabile distribuire OpenTelemetry di Monitoraggio di Azure per le nuove applicazioni o i clienti per attivare Application Insights per Monitoraggio di Azure. La distribuzione OpenTelemetry di Monitoraggio di Azure offre funzionalità ed esperienza simili come Application Insights SDK. È possibile eseguire la migrazione da Application Insights SDK usando le guide alla migrazione per .NET, Node.js e Python, ma stiamo ancora lavorando per aggiungere altre funzionalità per la compatibilità con le versioni precedenti.
Suggerimento
- Per impostazione predefinita, il provider di Application Insights invia solo i log con una gravità di
Warning
o superiore. Per includereInformation
o i log di livello inferiore, aggiornare le impostazioni a livello di log inappsettings.json
. - Se si vuole implementare l'intera gamma di dati di telemetria di Application Insights insieme alla registrazione, vedere Configurare Application Insights per i siti Web ASP.NET o Application Insights per le applicazioni ASP.NET Core.
- Il pacchetto NuGet
Microsoft.ApplicationInsights.WorkerService
, usato per abilitare Application Insights per i servizi in background, non rientra nell'ambito. Per altre informazioni, vedere Application Insights per le app del servizio di lavoro.
Applicazioni ASP.NET Core
Per aggiungere la registrazione di Application Insights alle applicazioni ASP.NET Core:
Installare
Microsoft.Extensions.Logging.ApplicationInsights
.Aggiungere
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();
Dopo aver installato il pacchetto NuGet e il provider registrato con l'inserimento delle dipendenze, l'app è pronta per la registrazione. Con l'inserimento del costruttore, ILogger o l'alternativa di tipo generico ILogger<TCategoryName> è necessaria. Quando queste implementazioni vengono risolte, ApplicationInsightsLoggerProvider
fornisce tali implementazioni. I messaggi o le eccezioni registrati vengono inviati ad Application Insights.
Si consideri il controller di esempio seguente:
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" };
}
}
Per altre informazioni, vedere Registrazione in ASP.NET Core e Quale tipo di telemetria di Application Insights viene generato dai log ILogger? Dove è possibile visualizzare i log ILogger in Application Insights?.
Applicazione console
Per aggiungere la registrazione di Application Insights alle applicazioni console, installare prima di tutto i pacchetti NuGet seguenti:
Nell'esempio seguente viene usato il pacchetto Microsoft.Extensions.Logging.ApplicationInsights e viene illustrato il comportamento predefinito per un'applicazione console. Il pacchetto Microsoft.Extensions.Logging.ApplicationInsights deve essere usato in un'applicazione console o ogni volta che si desidera un'implementazione minima di Application Insights senza il set di funzionalità completo, ad esempio metriche, traccia distribuita, campionamento e inizializzatori di telemetria.
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));
}
Per altre informazioni, vedere Che tipo di dati di telemetria di Application Insights viene prodotto dai log ILogger? Dove è possibile visualizzare i log ILogger in Application Insights?.
Ambiti di registrazione
ApplicationInsightsLoggingProvider
supporta gli ambiti di log. Gli ambiti sono abilitati per impostazione predefinita.
Se l'ambito è di tipo IReadOnlyCollection<KeyValuePair<string,object>>
, ogni coppia chiave/valore nella raccolta viene aggiunta ai dati di telemetria di Application Insights come proprietà personalizzate. Nell'esempio seguente i log vengono acquisiti come TraceTelemetry
e hanno ("MyKey", "MyValue")
in proprietà.
using (_logger.BeginScope(new Dictionary<string, object> { ["MyKey"] = "MyValue" }))
{
_logger.LogError("An example of an Error level message");
}
Se un altro tipo viene usato come ambito, viene archiviato nella proprietà Scope
nei dati di telemetria di Application Insights. Nell'esempio seguente TraceTelemetry
ha una proprietà denominata Scope
che contiene l'ambito.
using (_logger.BeginScope("hello scope"))
{
_logger.LogError("An example of an Error level message");
}
Passaggi successivi
- Per esaminare le domande frequenti, vedere Domande frequenti sulla registrazione con .NET
- Verificare di eseguire una versione supportata di Application Insights SDK.
- Registrazione in .NET
- Registrazione in ASP.NET Core
- Log di traccia .NET in Application Insights