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(); }
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(); }
[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()); }
[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."); }
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); } }
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(); }
[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()); }
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(); }
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(); }