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?
Antwort
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
Das sollte perfekt funktionieren, danke! – Kyle
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. –
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.
This question discussed dynamic reconfiguration of Log4Net loggers verwenden, die Ihnen die Informationen geben sollte, die Sie benötigen.
+1 Gute Frage. –