public FileConfigurationApi ArchiveEvery(FileArchivePeriod archivePeriod) { ArchivePeriod = archivePeriod; return(this); }
public void DateArchive_SkipPeriod(DateTimeKind timeKind, FileArchivePeriod archivePeriod, bool includeSequenceInArchive) { var tempPath = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString()); var tempFile = Path.Combine(tempPath, "file.txt"); var defaultTimeSource = TimeSource.Current; try { var timeSource = new TimeSourceTests.ShiftedTimeSource(timeKind); if (timeSource.Time.Minute == 59) { // Avoid double-archive due to overflow of the hour. timeSource.AddToLocalTime(TimeSpan.FromMinutes(1)); timeSource.AddToSystemTime(TimeSpan.FromMinutes(1)); } TimeSource.Current = timeSource; var ft = new FileTarget { FileName = tempFile, ArchiveFileName = Path.Combine(tempPath, "archive/{#}.txt"), LineEnding = LineEndingMode.LF, ArchiveNumbering = includeSequenceInArchive ? ArchiveNumberingMode.DateAndSequence : ArchiveNumberingMode.Date, ArchiveEvery = archivePeriod, ArchiveDateFormat = "yyyyMMddHHmm", Layout = "${date:format=O}|${message}", }; SimpleConfigurator.ConfigureForTargetLogging(ft, LogLevel.Debug); logger.Debug("1234567890"); timeSource.AddToLocalTime(TimeSpan.FromMinutes(1)); logger.Debug("1234567890"); // The archive file name must be based on the last time the file was written. string archiveFileName = string.Format("{0}.txt", timeSource.Time.ToString(ft.ArchiveDateFormat) + (includeSequenceInArchive ? ".0" : string.Empty)); // Effectively update the file's last-write-time. timeSource.AddToSystemTime(TimeSpan.FromMinutes(1)); timeSource.AddToLocalTime(TimeSpan.FromDays(2)); logger.Debug("1234567890"); LogManager.Configuration = null; string archivePath = Path.Combine(tempPath, "archive"); var archiveFiles = Directory.GetFiles(archivePath); Assert.Equal(1, archiveFiles.Length); Assert.Equal(archiveFileName, Path.GetFileName(archiveFiles[0])); } finally { TimeSource.Current = defaultTimeSource; // restore default time source LogManager.Configuration = null; if (Directory.Exists(tempPath)) Directory.Delete(tempPath, true); } }
public NLogConfigurationApi ArchiveEvery(FileArchivePeriod archivePeriod) { ArchivePeriod = archivePeriod; return this; }