public JLogger Build() { EnsureDirectory(Path.GetDirectoryName(Configuration.FilePath)); var fileController = new FileController(Configuration.FilePath); ISink sink = new FileSink(fileController); if (Configuration.FileSplitting) { sink = new BundleSink( sink, new SplitterSink(fileController, Configuration.SplittingDirectory, Configuration.MaxFileSize) ); EnsureDirectory(Configuration.SplittingDirectory); } if (Configuration.MinimumLogLevel > LogLevel.Trace || Configuration.MaximumLogLevel < LogLevel.Fatal) { sink = new FilterSink(sink, Configuration.MinimumLogLevel, Configuration.MaximumLogLevel); } if (Configuration.Backtrackng) { sink = new BundleSink( sink, new BacktrackSink(new FileSink(fileController), Configuration.MinimumLevelForBacktracking, Configuration.TriggeringLevelForBacktracking, Configuration.BacktrackingTime) ); } return(new JLogger(sink, new EntryFormatter(new DataFormatter()))); }
public void TestFilterRanges(LogLevel minimum, LogLevel maximum, LogLevel logLevel, bool expectedCapture) { var logsRecorded = new List <(string, LogLevel)>(); var innerSink = new Mock <ISink>(); innerSink.Setup(s => s.Emit(It.IsAny <string>(), It.IsAny <LogLevel>())) .Callback((string str, LogLevel level) => logsRecorded.Add((str, level))); var filterSink = new FilterSink(innerSink.Object, minimum, maximum); filterSink.Emit("test log", logLevel); if (expectedCapture) { Assert.Single(logsRecorded, ("test log", logLevel)); } else { Assert.Empty(logsRecorded); } }