Questa domanda è correlata alla risposta di Steven - here. Ha proposto un ottimo wrapper per il logger. Io incollare il suo codice qui sotto:Implementazione e utilizzo del wrapper logger per log4net
public interface ILogger
{
void Log(LogEntry entry);
}
public static class LoggerExtensions
{
public static void Log(this ILogger logger, string message)
{
logger.Log(new LogEntry(LoggingEventType.Information,
message, null));
}
public static void Log(this ILogger logger, Exception exception)
{
logger.Log(new LogEntry(LoggingEventType.Error,
exception.Message, exception));
}
// More methods here.
}
Quindi, la mia domanda è qual è il modo corretto per creare implementazione che proxy per log4net? Dovrei semplicemente aggiungere un altro metodo di estensione Log con il parametro type e quindi creare un interruttore all'interno? Utilizzare un metodo log4net diverso in caso di LoggingEventType
?
E seconda domanda, qual è il modo migliore per utilizzarlo più avanti nel codice?
perché ha scritto:
(...) è possibile creare facilmente un'implementazione ILogger (...) e configurare vostro contenitore DI iniettare in classi che hanno un ILogger nella loro costruttore .
Significa che ogni classe che registrerà sth (quindi praticamente ogni), dovrebbe avere ILogger
nel suo costruttore?
"Questo significa che ogni classe che registrerà esimo (in modo praticamente ogni)" . Se ogni classe utilizza un programma di registrazione, si sta seriamente [registrando troppo] (https://stackoverflow.com/questions/9892137/windsor-pulling-transient-objects-from-the-taintainer). – Steven
@Steven contrariamente agli upvotes e ai commenti su quella risposta, non sono assolutamente d'accordo: non si può mai registrare troppo. Soprattutto con i servizi Web e i servizi Windows (ad esempio i backend), in cui non vi sono segnalazioni di errori a un utente che si trovano di fronte a un'interfaccia utente, la registrazione è inestimabile per la risoluzione dei problemi. Certo, puoi dire "Questo codice è SOLIDO", ma se quel codice non può essere "post mortem debug" semplicemente leggendo il log per analizzare cosa stava facendo l'applicazione quando si è bloccato, allora cosa ti porta SOLID?Certo, ci sono test unitari per prevenire problemi, ma il codice non è mai perfetto. – CodeCaster
@CodeCaster: ho paura di aver frainteso la mia risposta. Non sto dicendo che non dovresti loggarti. Quello che sto dicendo è che dovresti avere meno linee di codice nella tua applicazione che riguardano la registrazione. E probabilmente dovresti gettare le eccezioni più spesso. – Steven