Zaktualizuj docelową nazwę pliku NLog w czasie wykonywania

W mojej aplikacji pracuję nad kilkoma tysiącami dokumentów dziennie. Chciałbym, w niektórych przypadkach kilka dzienników, jeden dziennik po dokumencie. Następnie chciałbym, aby konkretny cel zmienił nazwę pliku wyjściowego (i tylko nazwę pliku) w czasie wykonywania.

W sieci znalazłem sposób tworzenia celu przez programowanie mnie. Chciałbym po prostu zaktualizować nazwę pliku przez programowanie. Próbowałem kodu poniżej. Błąd, który otrzymuję, to „Nie można znaleźć LayoutRender„ logDirectory ”.

Dowolny pomysł ?

Dzięki,

var target = (FileTarget)LogManager.Configuration.FindTargetByName("logfile");
target.FileName = "${logDirectory}/file2.txt";

LoggingConfiguration config = new LoggingConfiguration();
var asyncFileTarget = new AsyncTargetWrapper(target);
config.AddTarget("logfile", asyncFileTarget);

LogManager.Configuration = config;

Plik konfiguracyjny to:

  <nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <variable name="logDirectory" value="C:/MyLogs"/>
    <targets>
      <target name="logfile" xsi:type="File" layout="${date:format=dd/MM/yyyy HH\:mm\:ss.fff}|${level}|${stacktrace}|${message}" fileName="${logDirectory}/file.txt" />
    </targets>

    <rules>
      <logger name="*" minlevel="Info" writeTo="logfile" />
    </rules>    
  </nlog>

questionAnswers(6)

yourAnswerToTheQuestion