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())));
        }
Exemple #2
0
        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);
            }
        }