Ho bisogno di creare un sistema semplice per astrarre le piattaforme di registrazione. L'idea è che mi piacerebbe essere in grado di scambiare o attivare una piattaforma di registrazione ( nlog
, log4net
, enterprise library
) tramite la configurazione alcuni (questo non dovrebbe essere un problema) . So che avrei bisogno di un wrapper per ogni piattaforma che voglio supportare che carichi le dll necessarie e crei i logger.
Stavo pensando di creare una classe astratta o un'interfaccia che fornisca i metodi più comuni come Log
, Debug
, Trace
, ecc.:
interface ILogger
{
void Log(...);
void Debug(...);
// etc.
}
class NLogPlatform : ILogger
{
// create nlog, load config etc.
}
class Log4NetPlatform : ILogger
{
// create log4net, load config etc.
}
class LoggerFactory
{
public static CreateLogger(...)
{
// read settings and create a logger.
}
}
All'inizio pensavo a un provider di log, ma poi ho scoperto che il provider non è affatto un modello, quindi ho esaminato .NET Design Patterns ma in realtà non sembra essere adatto. Mi sono perso qualcosa o c'è solo un motivo per questo?
Non ho ancora iniziato davvero perché stavolta preferirei andare nella direzione destra dall'inizio, quindi rifattorizzare diversi strumenti in seguito.
Potresti dirmi cosa dovrei prendere in considerazione durante la progettazione di un tale sistema e se esiste un modello per questo?