在运行时进行NLog配置用户定义的一个因素

时间:2013-11-27 13:16:41

标签: c# xml winforms nlog

我的Nlog配置文件如下:

<?xml version="1.0" encoding="utf-8" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

      <targets>
        <target xsi:type="File"
          name="file"
          layout="${longdate}|${level:uppercase=true}|${logger}|${message}"
          archiveAboveSize="2000"
          maxArchiveFiles="1"
          archiveFileName="${basedir}/log_archived.txt"
          fileName="log.txt" />
      </targets>

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

在我的项目中,代码如下:

 //Step1
    for (int i = 0; i < 100; i++)
    {
        logger.Fatal("Sample fatal error message::  {0}", i);
    }

    //Step2
    var nlogConfigFile = "NLog.config";
    var xdoc = XDocument.Load(nlogConfigFile);
    var ns = xdoc.Root.GetDefaultNamespace();
    var fileTarget = xdoc.Descendants(ns + "target").FirstOrDefault(t => (string)t.Attribute("name") == "file");
    fileTarget.Attribute("archiveAboveSize").SetValue(8000);
    xdoc.Save(nlogConfigFile);

    //Step3
    for (int i = 0; i < 100; i++)
    {
        logger.Fatal("Sample fatal error message::  {0}", i);
    }

Step1结束时。我的log.txt为2KB。然后在步骤2中,我将archiveAboveSize更改为8K。然后在第3步结束时,我应该有log.txt 8K。但它不会发生。该文件仍为2KB。但是,如果我关闭应用程序并再次重新运行它,则log.txt大小为8KB。为什么不在step3结束时我的文件大小为8KB而且没有关闭应用程序

1 个答案:

答案 0 :(得分:2)

您需要在步骤3之前重新加载NLog配置:

LogManager.Configuration = LogManager.Configuration.Reload();