예제 #1
0
        public void ArchiveLogFilesTest()
        {
            TestFileSystem FileSystem = CreateDefaultFileSystem();
            TestSystemTime SystemTime = new TestSystemTime(2020, 1, 19, 1, 0, 0, DateTimeKind.Local);

            using LogFileManager Manager = new LogFileManager(FileSystem, SystemTime);

            string BaseFileName = $"{FileLoggerOptions.DefaultLogFileDirectory}{Environment.MachineName}.20200118";

            for (int i = 0; i <= 10; i++)
            {
                string FileName = i == 0
                                        ? BaseFileName + ".log"
                                        : BaseFileName + $".{i}.log";

                TestFileSystem.TestFile?TestFile = FileSystem.FindFile(FileName, true);

                TestFile !.CreatedAtUtc = SystemTime.UtcNow.AddDays(-1);
            }

            FileSystem.FindFile($"{FileLoggerOptions.DefaultLogFileDirectory}SomeRandomFile.txt", true);
            FileSystem.FindFile($"{FileLoggerOptions.DefaultLogFileDirectory}SomeRandomLogFile.log", true);
            FileSystem.FindFile($"{FileLoggerOptions.DefaultLogFileDirectory}SomeOtherMachineName.20200118.log", true);

            using (Stream FullFile = FileSystem.OpenFile($"{FileLoggerOptions.DefaultLogFileDirectory}{Environment.MachineName}.20200119.log", FileMode.Create, FileAccess.Write, FileShare.None))
            {
                FullFile.Write(new byte[1024], 0, 1024);
            }

            LogFile?LogFile = Manager.FindLogFile(
                "AppName",
                "Group",
                () => s_DefaultOptions,
                FileLoggerOptions.DefaultLogFileNamePattern,
                1,
                s_DefaultManagementSchedule);

            Assert.IsNotNull(LogFile);
            Assert.AreEqual($"{Environment.MachineName}.20200119.1.log", LogFile.FinalFileName);

            Assert.AreEqual(16, FileSystem.EnumerateFiles(FileLoggerOptions.DefaultLogFileDirectory).Count());
            Assert.AreEqual(0, FileSystem.EnumerateFiles(FileLoggerOptions.DefaultLogFileArchiveDirectory).Count());

            Manager.ArchiveLogFiles("AppName", s_DefaultOptions, FileLoggerOptions.DefaultLogFileNamePattern);

            Assert.AreEqual(5, FileSystem.EnumerateFiles(FileLoggerOptions.DefaultLogFileDirectory).Count());
            Assert.AreEqual(11, FileSystem.EnumerateFiles(FileLoggerOptions.DefaultLogFileArchiveDirectory).Count());
        }