Ich schreibe ein kleines Dateikonvertierungsprogramm. Dateien werden automatisch konvertiert, wenn sie in ein Verzeichnis fallen.Hinzufügen/Entfernen von Protokolldateien zur Laufzeit in NLog
Ich benutze NLog für die Protokollierung. Neben einer zentralen Protokolldatei, die mit NLog.conf konfiguriert ist (und die alle generierten Nachrichten empfängt), möchte ich für jede Eingabedatei eine zusätzliche Protokolldatei erstellen, die einen ähnlichen Namen hat und alle während der Umwandlungsprozess.
Leider kann ich nicht herausfinden, wie man während der Laufzeit ein neues Dateiziel zusammen mit der entsprechenden Regel richtig hinzufügt. Ich möchte, dass alle Logger
Objekte während des Konvertierungsprozesses in die neue Protokolldatei schreiben.
Ich habe versucht, so etwas wie
var logfile = new NLog.Targets.FileTarget();
logfile.FileName = fileName + ".log";
logfile.KeepFileOpen = true;
logfile.Initialize();
var rule = new NLog.Config.LoggingRule("*", logfile);
NLog.LogManager.Configuration.LoggingRules.Add(rule);
NLog.LogManager.ReconfigExistingLoggers();
//
// Proceed with converting file
//
logfile.Flush();
NLog.LogManager.Configuration.LoggingRules.Remove(rule);
NLog.LogManager.ReconfigExistingLoggers();
Aber keine Protokolldatei erstellt wurde.
Was habe ich falsch gemacht? Irgendeine Idee?
Die Linie mit der Neuzuordnung ist sehr wichtig: LogManager.Configuration = config; – habakuk
** Die Zeile mit der Neuzuordnung Um zu klären ist sehr wichtig: LogManager.Configuration = config; ** Dies wegen der Art und Weise wahr ist NLog die Getter und Setter für die Konfiguration Eigenschaft geschrieben hat. Es ist nicht schön, aber es muss erneut mit einem geänderten Objekt eingestellt werden; Sie können die Eigenschaft nicht direkt ändern. – zshift
Ich musste die Logger-Variable am Ende neu zuweisen, um dies zum Laufen zu bringen: logger = LogManager.GetCurrentClassLogger(); – Henry