public void TestAddingCustomPattern()
        {
            StringAppender stringAppender = new StringAppender();
            PatternLayout  layout         = NewPatternLayout();

            layout.AddConverter("TestAddingCustomPattern", typeof(TestMessagePatternConverter));
            layout.ConversionPattern = "%TestAddingCustomPattern";
            layout.ActivateOptions();

            stringAppender.Layout = layout;

            ILoggerRepository rep = LogManager.CreateRepository(Guid.NewGuid().ToString());

            BasicConfigurator.Configure(rep, stringAppender);

            ILog log1 = LogManager.GetLogger(rep.Name, "TestAddingCustomPattern");

            log1.Info("TestMessage");
            Assert.AreEqual("TestMessage", stringAppender.GetString(), "%TestAddingCustomPattern not registered");
            stringAppender.Reset();
        }
Beispiel #2
0
        public void TestExceptionPattern()
        {
            StringAppender stringAppender = new StringAppender();
            PatternLayout  layout         = NewPatternLayout("%exception{stacktrace}");

            stringAppender.Layout = layout;

            ILoggerRepository rep = LogManager.CreateRepository(Guid.NewGuid().ToString());

            BasicConfigurator.Configure(rep, stringAppender);

            ILog log1 = LogManager.GetLogger(rep.Name, "TestExceptionPattern");

            Exception exception = new Exception("Oh no!");

            log1.Info("TestMessage", exception);

            Assert.AreEqual(SystemInfo.NullText, stringAppender.GetString());

            stringAppender.Reset();
        }
Beispiel #3
0
        [Test] public void TestPropertyIllegalCharacterMaskingInName()
        {
            LoggingEventData evt = createBaseEvent();

            evt.Properties["Property\uFFFF"] = "mask this ->\uFFFF";

            XmlLayout      layout         = new XmlLayout();
            StringAppender stringAppender = new StringAppender();

            stringAppender.Layout = layout;

            ILoggerRepository rep = LogManager.CreateRepository(Guid.NewGuid().ToString());

            BasicConfigurator.Configure(rep, stringAppender);
            ILog log1 = LogManager.GetLogger(rep.Name, "TestThreadProperiesPattern");

            log1.Logger.Log(new LoggingEvent(evt));

            string expected = createEventNode("Property?", "mask this ->?");

            Assert.AreEqual(expected, stringAppender.GetString());
        }
Beispiel #4
0
        [Test] public void TestPropertyCharacterEscaping()
        {
            LoggingEventData evt = createBaseEvent();

            evt.Properties["Property1"] = "prop1 \"quoted\"";

            XmlLayout      layout         = new XmlLayout();
            StringAppender stringAppender = new StringAppender();

            stringAppender.Layout = layout;

            ILoggerRepository rep = LogManager.CreateRepository(Guid.NewGuid().ToString());

            BasicConfigurator.Configure(rep, stringAppender);
            ILog log1 = LogManager.GetLogger(rep.Name, "TestThreadProperiesPattern");

            log1.Logger.Log(new LoggingEvent(evt));

            string expected = createEventNode("Property1", "prop1 "quoted"");

            Assert.AreEqual(expected, stringAppender.GetString());
        }
        public void TestFilterCustomException()
        {
            IAppender[] appenders = LogManager.GetRepository(loggerRepository.Name).GetAppenders();
            Assert.IsTrue(appenders.Length == 1);

            IAppender appender = Array.Find(appenders, delegate(IAppender a) {
                return(a.Name == "MemoryAppender");
            });

            Assert.IsNotNull(appender);

            StringAppender stringAppender = appender as StringAppender;

            Assert.IsNotNull(stringAppender);

            ILog log1 = LogManager.GetLogger(loggerRepository.Name, "TestFormatString");

            Assert.IsNotNull(log1);

            // ***
            log1.Info("Testing for ExceptionTypeFilterTestException", new ExceptionTypeFilterTestException());
            Assert.AreEqual("Testing for ExceptionTypeFilterTestException", stringAppender.GetString(), "Test ExceptionTypeFilterTestException can be filter.");
        }
Beispiel #6
0
        public void BracketsInStackTracesAreEscapedProperly()
        {
            XmlLayout      layout         = new XmlLayout();
            StringAppender stringAppender = new StringAppender();

            stringAppender.Layout = layout;

            ILoggerRepository rep = LogManager.CreateRepository(Guid.NewGuid().ToString());

            BasicConfigurator.Configure(rep, stringAppender);
            ILog         log1 = LogManager.GetLogger(rep.Name, "TestLogger");
            Action <int> bar  = foo => {
                try {
                    throw new NullReferenceException();
                }
                catch (Exception ex) {
                    log1.Error(string.Format("Error {0}", foo), ex);
                }
            };

            bar(42);

            var log = stringAppender.GetString();
            var startOfExceptionText = log.IndexOf("<exception>", StringComparison.InvariantCulture) + 11;
            var endOfExceptionText   = log.IndexOf("</exception>", StringComparison.InvariantCulture);
            var sub = log.Substring(startOfExceptionText, endOfExceptionText - startOfExceptionText);

            if (sub.StartsWith("<![CDATA["))
            {
                StringAssert.EndsWith("]]>", sub);
            }
            else
            {
                StringAssert.DoesNotContain("<", sub);
                StringAssert.DoesNotContain(">", sub);
            }
        }
Beispiel #7
0
        public void TestShutdownAndReconfigure()
        {
            // Create unique repository
            ILoggerRepository rep = LogManager.CreateRepository(Guid.NewGuid().ToString());

            // Create appender and configure repos
            StringAppender stringAppender = new StringAppender
            {
                Layout = new PatternLayout("%m")
            };

            BasicConfigurator.Configure(rep, stringAppender);

            // Get logger from repos
            ILog log1 = LogManager.GetLogger(rep.Name, "logger1");

            log1.Info("TestMessage1");
            Assert.AreEqual("TestMessage1", stringAppender.GetString(), "Test logging configured");
            stringAppender.Reset();

            rep.Shutdown();

            log1.Info("TestMessage2");
            Assert.AreEqual("", stringAppender.GetString(), "Test not logging while shutdown");
            stringAppender.Reset();

            // Create new appender and configure
            stringAppender = new StringAppender
            {
                Layout = new PatternLayout("%m")
            };
            BasicConfigurator.Configure(rep, stringAppender);

            log1.Info("TestMessage3");
            Assert.AreEqual("TestMessage3", stringAppender.GetString(), "Test logging re-configured");
            stringAppender.Reset();
        }
Beispiel #8
0
        [Test] public void TestBase64PropertyEventLogging()
        {
            LoggingEventData evt = createBaseEvent();

            evt.Properties["Property1"] = "prop1";

            XmlLayout layout = new XmlLayout();

            layout.Base64EncodeProperties = true;
            StringAppender stringAppender = new StringAppender();

            stringAppender.Layout = layout;

            ILoggerRepository rep = LogManager.CreateRepository(Guid.NewGuid().ToString());

            BasicConfigurator.Configure(rep, stringAppender);
            ILog log1 = LogManager.GetLogger(rep.Name, "TestThreadProperiesPattern");

            log1.Logger.Log(new LoggingEvent(evt));

            string expected = createEventNode("Property1", "cHJvcDE=");

            Assert.AreEqual(expected, stringAppender.GetString());
        }
Beispiel #9
0
        public void TestStackTracePattern()
        {
            StringAppender stringAppender = new StringAppender();

            stringAppender.Layout = new PatternLayout("%stacktrace{2}");

            ILoggerRepository rep = LogManager.CreateRepository(Guid.NewGuid().ToString());

            BasicConfigurator.Configure(rep, stringAppender);

            ILog log1 = LogManager.GetLogger(rep.Name, "TestStackTracePattern");

            log1.Info("TestMessage");
#if !MONO
            Assert.AreEqual("RuntimeMethodHandle._InvokeMethodFast > PatternLayoutTest.TestStackTracePattern", stringAppender.GetString(), "stack trace value set");
#else
            Assert.AreEqual("MonoMethod.InternalInvoke > PatternLayoutTest.TestStackTracePattern", stringAppender.GetString(), "stack trace value set");
#endif
            stringAppender.Reset();
        }
Beispiel #10
0
        public void TestLogFormatApi_NoInfo()
        {
            while (true)
            {
            }
            StringAppender stringAppender = new StringAppender();

            stringAppender.Threshold = Level.Warn;
            stringAppender.Layout    = new PatternLayout("%level:%message");

            ILoggerRepository rep = LogManager.CreateRepository(Guid.NewGuid().ToString());

            BasicConfigurator.Configure(rep, stringAppender);

            ILog log1 = LogManager.GetLogger(rep.Name, "TestLogFormatApi_Info");

            // ***
            log1.Info("TestMessage");
            Assert.AreEqual("", stringAppender.GetString(), "Test simple INFO event 1");
            stringAppender.Reset();

            // ***
            log1.Info("TestMessage", null);
            Assert.AreEqual("", stringAppender.GetString(), "Test simple INFO event 2");
            stringAppender.Reset();

            // ***
            log1.Info("TestMessage", new Exception("Exception message"));
            Assert.AreEqual("", stringAppender.GetString(), "Test simple INFO event 3");
            stringAppender.Reset();

            // ***
            log1.InfoFormat("a{0}", "1");
            Assert.AreEqual("", stringAppender.GetString(), "Test formatted INFO event with 1 parm");
            stringAppender.Reset();

            // ***
            log1.InfoFormat("a{0}b{1}", "1", "2");
            Assert.AreEqual("", stringAppender.GetString(), "Test formatted INFO event with 2 parm");
            stringAppender.Reset();

            // ***
            log1.InfoFormat("a{0}b{1}c{2}", "1", "2", "3");
            Assert.AreEqual("", stringAppender.GetString(), "Test formatted INFO event with 3 parm");
            stringAppender.Reset();


            // ***
            log1.InfoFormat("a{0}b{1}c{2}d{3}e{4}f", "Q", "W", "E", "R", "T", "Y");
            Assert.AreEqual("", stringAppender.GetString(), "Test formatted INFO event with 5 parms (only 4 used)");
            stringAppender.Reset();

            // ***
            log1.InfoFormat(null, "Before {0} After {1}", "Middle", "End");
            Assert.AreEqual("", stringAppender.GetString(), "Test formatting with null provider");
            stringAppender.Reset();

            // ***
            log1.InfoFormat(new CultureInfo("en"), "Before {0} After {1}", "Middle", "End");
            Assert.AreEqual("", stringAppender.GetString(), "Test formatting with 'en' provider");
            stringAppender.Reset();
        }