私のプロジェクトでは、基本的にはnLogの上にあるシェルであるロギングシステムを作成しました。私はロギングシステムのアーカイブ機能をユニットテストしようとしています。私は範囲を作成し、ログの多くがすでに存在していることをシミュレートするためにユニットテストNlogのアーカイブ機能
var myFileTarget = new FileTarget();
LogConfig.AddTarget("file", myFileTarget);
myFileTarget.FileName = LogFile;
myFileTarget.Layout = LogFileLayout;
myFileTarget.AutoFlush = true;
//Archive specifics
var token = "{#}";
var archiveFileName = $"{Path.GetFileNameWithoutExtension(LogFile)}.{token}.{Path.GetExtension(LogFile)}";
myFileTarget.ArchiveFileName = archiveFileName;
myFileTarget.ArchiveNumbering = ArchiveNumberingMode.Rolling;
myFileTarget.ArchiveEvery = toFileArchivePeriod(LogStyle);
myFileTarget.EnableFileDelete = true;
myFileTarget.MaxArchiveFiles = TTL; //Time to Live
myFileTarget.DeleteOldFileOnStartup = true;
:現在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);
}
しかし、私は私のログシステムを介して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は、古いログを見ているということですが、ファイルの内容の検証プロセスのいくつかの種類を持っているIのみコンテンツとして "UNITTEST"を埋めていますが、nlogを "再起動"するか、強制的にログを見ることができませんでした。
はちょうど私がテストを右に設定していない、あなたはこれがここには問題ではない私