我的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而且没有关闭应用程序
答案 0 :(得分:2)
您需要在步骤3之前重新加载NLog配置:
LogManager.Configuration = LogManager.Configuration.Reload();