2011-01-17 12 views
2

Ich verwende log4net, das über eine Konfigurationsdatei konfiguriert wird. Es gibt einen Fall, in dem ich möchte, dass alles beim Debuggen angemeldet ist (ein Code, der während eines Upgrades verwendet wird). Kann ich die aktuelle Logging-Ebene trotzdem abrufen, auf Debug setzen, den angegebenen Code ausführen und dann zurück zu dem, was es vorher war?log4net override XML-Konfiguration?

+0

+1 Gute Frage. –

Antwort

3

Sie einen Abschnitt in der Konfigurationsdatei für DEBUG speziell hinzufügen

<logger name="MyApp.DebugLogging" additivity="false"> 
     <level value="DEBUG"/> 
     <appender-ref ref="MainLog"/> 
    </logger 

Dann in Ihrem Code verwenden, können Sie diesen Logger zugreifen:

private static readonly ILog debuglog = log4net.LogManager.GetLogger("MyApp.DebugLogging"); 

und die Variable in Ihrem Code verwenden Block als

debuglog .Debug(ex); 

Die Idee hier ist, Sie sollten in der Lage sein, verschiedene lo zu erstellen ggers in Ihrer Konfigurationsdatei, dann haben Sie Flexibilität zu wählen, welche Logger innerhalb Ihrer Codeblöcke

+0

Das sollte perfekt funktionieren, danke! – Kyle

+0

Das ist eine gute Lösung. Ich würde jedoch lieber die vorhandenen Logger verwenden, anstatt einen neuen Logger nur für den beschriebenen Prozess zu erstellen. Warum? Wenn Sie die Protokollierungsinfrastruktur ordnungsgemäß verwenden, sollten Sie in jedem Protokollierer bereits die 'Debug'-Methode verwenden. Ändern Sie die Protokollierungsstufe (oder den Filter, was auch immer) ** nur in der Konfigurationsdatei **, und Sie haben den Vorteil, die Debug-Ebene ohne neuen Code für das System anzuzeigen. Neuer Code ist mehr Wartung und mehr potenzielle Fehler. –

1

Hier ist eine Idee:

Verwenden Sie nur log4net-Konfigurationsdatei. Setzen Sie das "watch" -Flag auf "true", um es zu sehen.

In dieser Konfigurationsdatei legen Sie eine Protokollierung Filter (in jedem Appender) fest. Stellen Sie die Mindeststufe auf Info oder was auch immer. Siehe den Filter-Abschnitt in http://logging.apache.org/log4net/release/manual/configuration.html

Dann vor der Upgrade-Phase, bearbeiten Sie die Konfigurationsdatei und ändern Sie die Mindeststufe des Filters zu sagen, Debug.

Sobald das Upgrade abgeschlossen ist, setzen Sie den Mindestpegel des Filters auf seinen ursprünglichen Wert zurück.