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
Eseguire attività pianificate con Azure Container Jobs
Come migrare da una form non tipizzata a una form tipizzata in Angular
Generare file per il download da Blazor WebAssembly
Sviluppare un'interfaccia utente in React con Tailwind CSS e Preline UI
Utilizzare i primary constructor in C#
Potenziare Azure AI Search con la ricerca vettoriale
Ottimizzare il mapping di liste di tipi semplici con Entity Framework Core
Utilizzare Model as a Service su Microsoft Azure
Miglioramenti agli screen reader e al contrasto in Angular
Catturare la telemetria degli eventi di output cache in ASP.NET Core
Utilizzare le collection expression in C#
Creare gruppi di client per Event Grid MQTT
I più letti di oggi
- Evitare il flickering dei componenti nel prerender di Blazor 8
- Rilasciata la Beta 2 di Visual Studio 2008
- tra pochi minuti inizia la keynote della seconda giornata. seguila live su http://aspitalia.com/mix-11 #mix11
- .@dbochicchio ora su #aspnetcore 2 a #netconfit https://aspit.co/netconf-17
- Utilizzare angular-cli per creare una direttiva in Angular 2
- Windows Vista: il ritorno di WinFS con la beta1
- .@CristianCivera tra poco su #azure con i suoi tips&tricks per lo sviluppatore web: https://aspit.co/web15-live #aspilive
- Le novità di C# 10