Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 单元测试Nlog';s存档功能_C#_Unit Testing_Nlog - Fatal编程技术网

C# 单元测试Nlog';s存档功能

C# 单元测试Nlog';s存档功能,c#,unit-testing,nlog,C#,Unit Testing,Nlog,在我的项目中,我创建了一个日志系统,它基本上是nLog上的一个外壳。我正在尝试对日志系统的归档功能进行单元测试。目前设置为进行滚动存档,最大存档文件数为5(Nlog是通过代码设置的,不使用配置文件): 为了模拟大量日志已经存在,我创建了一系列与上面的ArchiveFileName结构相同的日志: LogFileName = "LogTTLDailyTest.log"; LogStyle = "daily"; LogTTL = 5; //Time To Live //Arrange old fi

在我的项目中,我创建了一个日志系统,它基本上是nLog上的一个外壳。我正在尝试对日志系统的归档功能进行单元测试。目前设置为进行滚动存档,最大存档文件数为5(Nlog是通过代码设置的,不使用配置文件):

为了模拟大量日志已经存在,我创建了一系列与上面的ArchiveFileName结构相同的日志:

LogFileName = "LogTTLDailyTest.log";
LogStyle = "daily";
LogTTL = 5; //Time To Live

//Arrange old filelogs
for (int i = 0; i < 100; i++)
{
    var filename = $"LogTTLDailyTest.{i}.log";
    File.WriteAllText(TestLogsDirectory + filename, "UNITTEST");
    var creationTime = DateTime.Now.AddDays((i + 1)* -1);
    File.SetCreationTime(TestLogsDirectory + filename, creationTime);
    File.SetLastWriteTime(TestLogsDirectory + filename, creationTime);
}
LogFileName=“LogTTLDailyTest.log”;
LogStyle=“每日”;
LogTTL=5//活下去的时间
//整理旧文件日志
对于(int i=0;i<100;i++)
{
var filename=$“LogTTLDailyTest.{i}.log”;
writealText(TestLogsDirectory+filename,“UNITTEST”);
var creationTime=DateTime.Now.AddDays((i+1)*-1);
SetCreationTime(TestLogsDirectory+文件名,creationTime);
SetLastWriteTime(TestLogsDirectory+文件名,creationTime);
}
但是,当我通过日志系统向nlog写入日志时,它不会看到我创建的旧日志文件,因此不会删除它们。但是,它会清理旧的当前日志文件,因此删除文件是可行的:

NLog: 2017-07-20 12:54:20.7434 Info Closing old configuration.
NLog: 2017-07-20 12:54:20.7434 Info Found 36 configuration items
NLog: 2017-07-20 12:54:20.7594 Info Found 36 configuration items
NLog: 2017-07-20 12:54:26.9157 Info Deleting old archive file: 'C:\<projectpath>\bin\Debug\unittestlogsea984b05-3c33-4142-9d1a-c900bad89006\LogTTLDailyTest.log'.
NLog:2017-07-20 12:54:20.7434关闭旧配置的信息。
NLog:2017-07-20 12:54:20.7434信息找到36个配置项
NLog:2017-07-20 12:54:20.7594信息找到36个配置项
NLog:2017-07-20 12:54:26.9157删除旧存档文件的信息:“C:\\bin\Debug\unittestlogsea984b05-3c33-4142-9d1a-c900bad89006\LogTTLDailyTest.log”。
我目前的理论是,nlog可以看到旧的日志,但对文件的内容有某种验证过程,我只将“UNITTEST”作为内容填充,但我无法“重新启动”nlog或强制它查看日志


希望你能帮助我

这里没有问题,只是我没有正确设置测试。我忘记了滚动并没有删除,只是将所有文件重命名为下一个滚动编号。以这种滚动方式删除最后一个文件。nlog将忽略任何其他文件。我还忘了在一天前设置当前日志文件。这意味着nlog看到我有一个不到一天的当前文件。但是因为我激活了DeleteOldFileOnStartup,所以它删除了那个文件

因此,为了纠正我的错误,我确保只创建所需数量的文件或更少的文件,并确保最新的文件没有滚动编号,并且已经有一天了。我还删除了DeleteOldFileOnStartup选项。Nlog现在正在做我期望它能完美完成的事情

NLog: 2017-07-20 12:54:20.7434 Info Closing old configuration.
NLog: 2017-07-20 12:54:20.7434 Info Found 36 configuration items
NLog: 2017-07-20 12:54:20.7594 Info Found 36 configuration items
NLog: 2017-07-20 12:54:26.9157 Info Deleting old archive file: 'C:\<projectpath>\bin\Debug\unittestlogsea984b05-3c33-4142-9d1a-c900bad89006\LogTTLDailyTest.log'.