Sto scrivendo una piccola utilità di conversione file. I file vengono convertiti automaticamente quando vengono rilasciati in una directory.Aggiungi/rimuovi file di log durante il runtime in NLog
Sto utilizzando NLog per la registrazione. Oltre a un file di registro centrale che viene configurato utilizzando NLog.conf (e che riceve tutti i messaggi generati), vorrei creare un file di registro aggiuntivo per ogni file di input, con un nome simile e contenente tutti i messaggi di registro scritti durante il processo di conversione.
Purtroppo mi sembra di non essere in grado di scoprire come aggiungere correttamente un nuovo target di file insieme alla regola appropriata durante il runtime. Voglio che tutti gli oggetti Logger
scrivano nel nuovo file di registro durante il processo di conversione.
ho provato qualcosa di simile
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();
Ma nessun file di log è stato creato.
Cosa ho sbagliato? Qualche idea?
La linea con la riassegnazione è molto importante: LogManager.Configuration = config; – habakuk
Per chiarire ** La riga con la riassegnazione è molto importante: LogManager.Configuration = config; ** Ciò è vero a causa del modo in cui NLog ha scritto i getter e i setter per la proprietà Configuration. Non è carino, ma deve essere impostato di nuovo con un oggetto modificato; non è possibile modificare direttamente la proprietà. – zshift
Ho dovuto riassegnare la variabile del logger alla fine per farlo funzionare: logger = LogManager.GetCurrentClassLogger(); – Henry