TL; DR - Sprung zum letzten AbsatzWie kann ich die Einrückung beim Ein-/Ausstieg aus Methoden erhöhen/verringern?
Hintergrund
ich einige Daten gesteuerte Tests durchführen und die Protokolldatei als eine der Testausgänge. Es funktioniert so etwas wie this-
- in Ordner erste Datei lesen
- Prozess erste Zeile und konvertieren zu einem Test
- Run Test
- Perform Validation 1
- ...
- ...
- lesen nächste Datei
- Etc.
Meine Log-Datei spiegelt dies:
INFO - Start RunAllFilesInFolder
INFO - File1:
INFO - Some info
INFO - Executing Test 1
INFO - Validation A result
INFO - ...
INFO - ...
INFO - File2:
...
Im Moment benutze ich/Call Log 4 Netz wie this-
static class LogHelper
{
internal static readonly log4net.ILog Log = log4net.LogManager.GetLogger
(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
}
// another file
using static Some.Namespace.LogHelper;
class SomeClass
{
Log.Info($"\t\tExecuting {t.Number}-{t.Name}");
}
Wobei Einrückung = "\ t", "\ t \ t" oder "\ t \ t \ t" abhängig von der Ebene, in der sich der Test befindet.
Gibt es eine Möglichkeit, den Anruf zu LogHelper.Log Refactoring, so dass es berücksichtigt eine statische „indent“, die erhöht werden kann/verringert, wie ich in die verschiedenen Teststufen fort, ohne explizit den Einzug in die Angabe jeder Anruf?
I.e. einfach mit der Lage sein, gegebenenfalls etwas wie
Log.Indent.Increase();
Oder
Log.Indent.Decrease();
und ersetzen Sie den obigen Aufruf rufen anmelden -
Log.Info($"Executing {t.Number}-{t.Name}");
Danke für die detaillierte Antwort! Leider kann es zu diesem Zeitpunkt für meine Zwecke zu viel Overkill sein ... Könnten Sie versuchen, die spezifische Frage (letzter Absatz) mit Ihrer IndentTracker-Klasse zu beantworten? –
Ich habe die Frage bearbeitet, um klarer zu sein, was genau ich bin –
Klingt sehr einfach jetzt. Nicht sicher, wo Sie Schwierigkeiten haben, das selbst zu implementieren. – weston