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)); }
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>(); }