Stavo passando per diversi post del blog su StackOverflow e programmatori e sono ancora un po 'confuso. È possibile installare NLog (o qualche altra lib di registrazione) e avviare la registrazione abbastanza velocemente e quindi è possibile installare le informazioni sulle applicazioni e un adattatore per raccogliere effettivamente i dati in Azure Application Insights.
È davvero necessario utilizzare due approcci (NLog combinato con AppInsights)? Cosa succede se usiamo semplicemente il TelemetryClient di AppInsight per accedere e tracciare. Se voglio andare alla moda, posso avvolgerlo con un'interfaccia, così posso facilmente cambiarlo in seguito. Posso anche avvolgerlo in Common.Logging per essere ancora più elaborato. (Sarei davvero fantasioso lì.)
Ci sono dei vantaggi nell'utilizzo di NLog e Application Insights? Pensi che l'accesso a un database "locale" e ad Azure sia superfluo? Ci sono degli svantaggi nell'utilizzare solo Application Insights sia per la registrazione che per la traccia (latenza, troppo costosa per chiamare sia il tempo che il denaro)?
Esempio di AppInsight : immagina di avere un contenitore DI da qualche parte:
ILog.cs
public interface ILog
{
void Exception(Exception ex);
}
TelemetryClientLog.cs
public class TelemetryClientLog : ILog
{
private readonly TelemetryClient telemetryClient = null;
public TelemetryClientLog(TelemetryClient telemetryClient)
{
this.telemetryClient = telemetryClient;
}
public void Exception(Exception ex)
{
this.telemetryClient.TrackException(ex);
}
}
StarWars.cs
// somewhere in a code far far away with an injected logger
try
{
this.CallJedi();
}
catch(LightSaberException lse)
{
// log implements ILog interface, look above
this.log.Exception(lse);
}