public void ChangeConfiguration_ValidateOnNlogConfiguration(bool compressed, bool archiveOnStart, string layout, bool debug) { // Arrange var filter = Guid.NewGuid().ToString(); var filename = Guid.NewGuid().ToString(); var fileCount = 11; var fileCountNew = 10; var fileSize = new FileSize { SizeType = SizeType.KibiByte, Size = 123456 }; var logLevel = LogLevel.Information; var sut = new NLogLoggerConfiguration(); sut.ApplyConfiguration(options => options .WithLevel(logLevel) .WithFilter(filter) .WithFile(filename) .WithMaxSize(fileSize) .WithArchiveCount(fileCount) .Compress(compressed) .ArchiveOnStart(archiveOnStart) .WithLogMessageLayout(layout) .AddDebugTarget(debug)); // Act sut.ChangeConfiguration(options => options.WithArchiveCount(fileCountNew)); // Assert var config = NLog.LogManager.Configuration; var target = config.AllTargets.OfType <NLog.Targets.FileTarget>().Single(); target.ArchiveAboveSize.Should().Be(fileSize.SizeInBytes); (target.FileName as NLog.Layouts.SimpleLayout)?.Text.Should().Be(filename); target.ArchiveOldFileOnStartup.Should().Be(archiveOnStart); target.MaxArchiveFiles.Should().Be(fileCountNew); target.EnableArchiveFileCompression.Should().Be(compressed); var rule = config.LoggingRules.First(); rule.Levels.Should().Contain(logLevel.ToNLog()); // Debug if (debug) { config.AllTargets.OfType <NLog.Targets.DebuggerTarget>().Should().HaveCount(1); } else { config.AllTargets.OfType <NLog.Targets.DebuggerTarget>().Should().BeEmpty(); } //Layout if (sut.CurrentOptions.LogMessageLayout == null) { target.Layout.Render(new LogEventInfo(logLevel.ToNLog(), "MyLogger", "Hallo Welt")).Should().Contain("INFO|MyLogger||Hallo Welt|"); } else { target.Layout.Render(new LogEventInfo(logLevel.ToNLog(), "MyLogger", "Hallo Welt")).Should().Be("MyLogger"); } }
public void ChangeConfiguration_WithNoOptionFunction_Throws() { // Arrange var sut = new NLogLoggerConfiguration(); var sutAction = new Action(() => sut.ChangeConfiguration(null)); // Act / Assert sutAction.Should().ThrowExactly <ArgumentNullException>() .Which.ParamName.Should().Be("options"); }