Example #1
0
        public void Should_roll_by_time(RollingStrategyType rollingStrategyType, string extension)
        {
            var logName = Folder.GetFileName("log" + extension);

            var rollingStrategyOptions = new RollingStrategyOptions
            {
                Type   = RollingStrategyType.ByTime,
                Period = RollingPeriod.Second
            };

            using (var log = CreateRollingFileLog(logName, rollingStrategyOptions))
            {
                WriteMessagesWithTimeout(log, GenerateMessages(0, 10), 1);
                Thread.Sleep(1.5.Seconds());
                WriteMessagesWithTimeout(log, GenerateMessages(10, 20), 1);
                Thread.Sleep(1.5.Seconds());
                WriteMessagesWithTimeout(log, GenerateMessages(20, 30), 1);
            }

            var files = GetFilesByPrefixOrdered(logName, rollingStrategyOptions);

            files.Length.Should().BeGreaterOrEqualTo(3);

            ShouldContainMessage(files.Last(), FormatMessage(29));
        }
Example #2
0
        public void Should_roll_by_size(RollingStrategyType rollingStrategyType, string extension)
        {
            var logName = Folder.GetFileName("log" + extension);

            var rollingStrategyOptions = new RollingStrategyOptions
            {
                Type    = rollingStrategyType,
                MaxSize = 1024
            };

            var messages = GenerateMessages(0, 150);

            using (var log = CreateRollingFileLog(logName, rollingStrategyOptions))
            {
                WriteMessagesWithTimeout(log, messages, 10);
            }

            var files       = GetFilesByPrefixOrdered(logName, rollingStrategyOptions);
            var fileLengths = files.Select(file => new FileInfo(file.NormalizedPath).Length).ToArray();

            files.Length.Should().Be(5);
            fileLengths.Take(4).All(length => 1024 <= length && length <= 2048).Should().BeTrue();
            fileLengths.Last().Should().BeLessThan(2048);

            ShouldContainMessage(files.Last(), messages.Last());
        }
        public void Should_create_strategy_with_correct_settings([Values] RollingStrategyType type)
        {
            settings.RollingStrategy.Type = type;

            provider.ObtainStrategy();

            strategyFactory.Received().CreateStrategy("log", type, Arg.Any <Func <FileLogSettings> >());
        }
 public void ValidateSettings_should_allow_zero_RollingStrategy_MaxFiles([Values] RollingStrategyType type)
 {
     new Action(() => SettingsValidator.ValidateSettings(new FileLogSettings {
         RollingStrategy = new RollingStrategyOptions {
             MaxFiles = 0
         }
     }))
     .Should().NotThrow();
 }
 public void ValidateSettings_should_not_allow_invalid_RollingStrategy_Period(RollingStrategyType type)
 {
     new Action(() => SettingsValidator.ValidateSettings(new FileLogSettings {
         RollingStrategy = new RollingStrategyOptions {
             Period = (RollingPeriod)(-1), Type = type
         }
     }))
     .Should().Throw <ArgumentOutOfRangeException>();
 }
        public IRollingStrategy CreateStrategy(FilePath basePath, RollingStrategyType type, Func <FileLogSettings> settingsProvider)
        {
            var fileSystem = new FileSystem();

            switch (type)
            {
            case RollingStrategyType.None:
                return(new DisabledRollingStrategy(fileSystem));

            case RollingStrategyType.ByTime:
                return(CreateTimeBasedStrategy(settingsProvider, fileSystem));

            case RollingStrategyType.BySize:
                return(CreateSizeBasedStrategy(settingsProvider, fileSystem));

            case RollingStrategyType.Hybrid:
                return(CreateHybridStrategy(settingsProvider, fileSystem));

            default:
                throw new ArgumentOutOfRangeException(nameof(type));
            }
        }
 public void ValidateSettings_should_allow_zero_RollingStrategy_MaxSize_for_None_and_ByTime_strategies(RollingStrategyType type)
 {
     new Action(() => SettingsValidator.ValidateSettings(new FileLogSettings {
         RollingStrategy = new RollingStrategyOptions {
             MaxSize = 0, Type = type
         }
     }))
     .Should().NotThrow();
 }
 public void ValidateSettings_should_not_allow_non_positive_RollingStrategy_MaxSize_for_BySize_and_Hybrid_strategies(int maxSize, RollingStrategyType type)
 {
     new Action(() => SettingsValidator.ValidateSettings(new FileLogSettings {
         RollingStrategy = new RollingStrategyOptions {
             MaxSize = maxSize, Type = type
         }
     }))
     .Should().Throw <ArgumentOutOfRangeException>();
 }