Modo corretto per arrestare un'istanza di logger in log4Net

Modo corretto per arrestare un'istanza di logger in log4Net

Questo ha funzionato per me:

log.Logger.Repository.Shutdown();

oppure puoi prendere la strada lunga:

foreach (log4net.Appender.IAppender app in log.Logger.Repository.GetAppenders()) {
    app.Close();
}

In questo caso, poiché non stai condividendo alcun appender, dovresti essere in grado di utilizzare il metodo IAppender.Close() su tutti gli appender allegati al tuo logger (questo causerà anche lo svuotamento di tutti).

Dovresti eseguire il cast del logger su IAppenderAttachable e ottenere il modulo appender lì; questo ti consentirà di assicurarti di chiamare Close() solo al livello superiore dei tuoi appender annidati. Questo dovrebbe indurli a svuotare e chiudere i propri figli nell'ordine corretto.

http://logging.apache.org/log4net/release/sdk/html/M_log4net_Appender_IAppender_Close.htm

Questo sarà molto pericoloso se stai usando una configurazione log4net standard con una configurazione!