Esempio n. 1
0
        public void Filtering()
        {
            LogManager.Start();
            MemoryLogger memoryLog = LogManager.CreateMemoryLogger();

            memoryLog.SubscribeToEvents(TestLogger.Write, EventLevel.Verbose);
            TestLogger.Write.String("first message");
            TestLogger.Write.String("bacon...bacon...bacon... OMG BACON");
            memoryLog.Disabled = true;
            memoryLog.Stream.Seek(0, SeekOrigin.Begin);

            // Nothing filtered.
            using (var reader = new StreamReader(memoryLog.Stream))
            {
                int lines = 0;
                while ((reader.ReadLine()) != null)
                {
                    ++lines;
                }
                Assert.AreEqual(2, lines);
            }
            memoryLog.Dispose();

            memoryLog = LogManager.CreateMemoryLogger();
            memoryLog.SubscribeToEvents(TestLogger.Write, EventLevel.Verbose);
            memoryLog.AddRegexFilter("first");
            TestLogger.Write.String("first message");
            TestLogger.Write.String("bacon...bacon...bacon... OMG BACON");
            memoryLog.Disabled = true;
            memoryLog.Stream.Seek(0, SeekOrigin.Begin);

            // Should now get just the one message
            using (var reader = new StreamReader(memoryLog.Stream))
            {
                int    lines = 0;
                string line;
                while ((line = reader.ReadLine()) != null)
                {
                    Assert.IsFalse(line.Contains("bacon"));
                    ++lines;
                }
                Assert.AreEqual(1, lines);
            }
            memoryLog.Dispose();

            memoryLog = LogManager.CreateMemoryLogger();
            memoryLog.SubscribeToEvents(TestLogger.Write, EventLevel.Verbose);
            memoryLog.AddRegexFilter("BaCoN"); // filter for bacon, ensure REs are not case sensitive.
            TestLogger.Write.String("first message");
            TestLogger.Write.String("bacon...bacon...bacon... OMG BACON");
            memoryLog.Disabled = true;
            memoryLog.Stream.Seek(0, SeekOrigin.Begin);

            // Now we should get the second only.
            using (var reader = new StreamReader(memoryLog.Stream))
            {
                int    lines = 0;
                string line;
                while ((line = reader.ReadLine()) != null)
                {
                    ++lines;
                    Assert.IsTrue(line.Contains("bacon"));
                }
                Assert.AreEqual(1, lines);
            }
            memoryLog.Dispose();
            LogManager.Shutdown();
        }