Entity Framework Core ha un motore di logging potente, ma leggermente più complesso da utilizzare rispetto a Entity Framework 6. Entity Framework Core richiede la creazione di una factory che è responsabile della creazione della vera classe di logging. La factory deve poi essere iniettata nel contesto che la utilizza per loggare informazioni.
Il primo passo per creare un logger custom consiste nel creare la classe di logging che come unico requisito ha quello di implementare l'interfaccia ILogger.
class MyLogger : ILogger
{
public bool IsEnabled(LogLevel logLevel) => true;
public void Log<TState>(LogLevel logLevel, EventId eventId, TState state, Exception exception,
Func<TState, Exception, string> formatter)
{
File.AppendAllText(@"C:\temp\log.txt", formatter(state, exception));
}
public IDisposable BeginScope<TState>(TState state) => null;
}La parte di logging viene effettuata nel metodo Log. In questo caso scriviamo su file, ma possiamo scrivere su un altro database, invocare un servizio, scrivere in cache e molto altro ancora.
A questo punto dobbiamo creare la factory che crea la classe MyLogger e che viene poi iniettata nel contesto. La classe deve implementare l'interfaccia ILoggerProvider.
public class MyLoggerProvider : ILoggerProvider
{
public ILogger CreateLogger(string categoryName)
{
return new MyLogger();
}
public void Dispose() {}Ora non rimane che iniettare la la factory in fase di inizializzazione del contesto.
using (var ctx = new MyContext())
{
var serviceProvider = ctx.GetInfrastructure<IServiceProvider>();
var loggerFactory = serviceProvider.GetService<ILoggerFactory>();
loggerFactory.AddProvider(new MyLoggerProvider());
}Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Ricevere notifiche sui test con Azure Load Testing
Anonimizzare i dati sensibili nei log di Azure Front Door
Integrare OpenAI tramite Aspire
Ridimensionamento automatico input tramite CSS
Definire il colore di una scrollbar HTML tramite CSS
Integrare un servizio esterno con .NET Aspire
Gestione ciclo di vita in .NET Aspire
Proteggere l'endpoint dell'agente A2A delle Logic App
Creare un agente A2Acon Azure Logic Apps
Creare espressioni riutilizzabili nelle query LINQ per Entity Framework
Gestione CSS in Blazor con .NET 9
Ridurre il reflow cambiando il CSS
I più letti di oggi
- Effettuare il multi-checkout in linea nelle pipeline di Azure DevOps
- Le DirectInk API nella Universal Windows Platform
- Alleggerire le applicazioni WPF sfruttando gli oggetti Freezable
- Esaminare documenti XML con namespace utilizzando LINQ to XML
- Sfruttare una CDN con i bundle di ASP.NET
- Effetto turnstile su tutte le pagine con il Windows Phone Toolkit
- Gli oggetti CallOut di Expression Blend 4.0


