public void InternalMessageTest() { try { LogInternal.InternalMessage = false; LogInternal.InternalDebug = true; XmlDocument log4netConfig = new XmlDocument(); log4netConfig.LoadXml(@" <Soyo.Base.Log> <appender name=""LogLogAppender"" type=""UnitTest.Base.Log.LoggerRepository.LogLogAppender""> <layout type=""Soyo.Base.Text.LayoutLoggerSimple"" /> </appender> <appender name=""AppenderMemory"" type=""Soyo.Base.Text.AppenderMemory""> <layout type=""Soyo.Base.Text.LayoutLoggerSimple"" /> </appender> <root> <level value=""ALL"" /> <appender-ref ref=""LogLogAppender"" /> <appender-ref ref=""AppenderMemory"" /> </root> </Soyo.Base.Log>"); ILoggerController rep = LogManager.CreateController(Guid.NewGuid().ToString()); rep.ChangeConfigEvent += new LoggerControllerEventHandler(rep_ConfigurationChanged); ICollection <LogInternal> configurationMessages = XmlConfig.Config(rep, log4netConfig["Soyo.Base.Log"]); Assert.IsTrue(configurationMessages.Count > 0); } finally { LogInternal.InternalMessage = true; LogInternal.InternalDebug = false; } }
public void MethodNameCategoryTest() { CategoryTraceListener categoryTraceListener = new CategoryTraceListener(); Trace.Listeners.Clear(); Trace.Listeners.Add(categoryTraceListener); ILoggerController rep = LogManager.CreateController(Guid.NewGuid().ToString()); AppenderTrace traceAppender = new AppenderTrace(); LayoutPattern methodLayout = new LayoutPattern("%method"); methodLayout.Activate(); traceAppender.Category = methodLayout; traceAppender.Layout = new LayoutLoggerSimple(); traceAppender.Activate(); BasicConfig.Config(rep, traceAppender); ILog log = LogManager.Get(rep.Name, GetType()); log.Debug("Message"); Assert.AreEqual( System.Reflection.MethodInfo.GetCurrentMethod().Name, categoryTraceListener.Category); }
public void SetControllerPropertiesInXmlFile() { // LOG4NET-53: Allow repository properties to be set in the config file XmlDocument log4netConfig = new XmlDocument(); log4netConfig.LoadXml(@" <Soyo.Base.Log> <property> <key value=""two-plus-two"" /> <value value=""4"" /> </property> <appender name=""StringAppender"" type=""UnitTest.Base.Log.StringAppender""> <layout type=""Soyo.Base.Text.LayoutLoggerSimple"" /> </appender> <root> <level value=""ALL"" /> <appender-ref ref=""StringAppender"" /> </root> </Soyo.Base.Log>"); ILoggerController rep = LogManager.CreateController(Guid.NewGuid().ToString()); XmlConfig.Config(rep, log4netConfig["Soyo.Base.Log"]); Assert.AreEqual("4", rep.PropertySet["two-plus-two"]); Assert.IsNull(rep.PropertySet["one-plus-one"]); }
public void BracketsInStackTracesKeepLogWellFormed() { LayoutLoggerXml layout = new LayoutLoggerXml(); StringAppender stringAppender = new StringAppender(); stringAppender.Layout = layout; ILoggerController rep = LogManager.CreateController(Guid.NewGuid().ToString()); BasicConfig.Config(rep, stringAppender); ILog log1 = LogManager.Get(rep.Name, "TestLogger"); Action <int> bar = foo => { try { throw new NullReferenceException(); } catch (Exception ex) { log1.Error(string.Format("Error {0}", foo), ex); } }; bar(42); // really only asserts there is no exception var loggedDoc = new XmlDocument(); loggedDoc.LoadXml(stringAppender.GetString()); }
public void TestShutdownAndReconfigure() { ILoggerController rep = LogManager.CreateController(Guid.NewGuid().ToString()); StringAppender stringAppender = new StringAppender(); stringAppender.Layout = new LayoutPattern("%m"); BasicConfig.Config(rep, stringAppender); ILog log1 = LogManager.Get(rep.Name, "logger1"); log1.Info("TestMessage1"); Assert.AreEqual("TestMessage1", stringAppender.GetString(), "Test logging configured"); stringAppender.Reset(); rep.Terminate(); log1.Info("TestMessage2"); Assert.AreEqual("", stringAppender.GetString(), "Test not logging while shutdown"); stringAppender.Reset(); stringAppender = new StringAppender(); stringAppender.Layout = new LayoutPattern("%m"); BasicConfig.Config(rep, stringAppender); log1.Info("TestMessage3"); Assert.AreEqual("TestMessage3", stringAppender.GetString(), "Test logging re-configured"); stringAppender.Reset(); }
public void TestThreadStackPattern2() { StringAppender stringAppender = new StringAppender(); stringAppender.Layout = new LayoutPattern("%property{" + Utils.PROPERTY_KEY + "}"); ILoggerController rep = LogManager.CreateController(Guid.NewGuid().ToString()); BasicConfig.Config(rep, stringAppender); ILog log1 = LogManager.Get(rep.Name, "TestThreadStackPattern"); log1.Info("TestMessage"); Assert.AreEqual(TextDefault.NullText, stringAppender.GetString(), "Test no thread stack value set"); stringAppender.Reset(); using (ThreadContext.Stacks[Utils.PROPERTY_KEY].Push("val1")) { log1.Info("TestMessage"); Assert.AreEqual("val1", stringAppender.GetString(), "Test thread stack value set"); stringAppender.Reset(); using (ThreadContext.Stacks[Utils.PROPERTY_KEY].Push("val2")) { log1.Info("TestMessage"); Assert.AreEqual("val1 val2", stringAppender.GetString(), "Test thread stack value pushed 2nd val"); stringAppender.Reset(); } } log1.Info("TestMessage"); Assert.AreEqual(TextDefault.NullText, stringAppender.GetString(), "Test thread stack value removed"); stringAppender.Reset(); }
public void TestGlobalPropertiesPattern() { StringAppender stringAppender = new StringAppender(); stringAppender.Layout = NewPatternLayout("%property{" + Utils.PROPERTY_KEY + "}"); ILoggerController rep = LogManager.CreateController(Guid.NewGuid().ToString()); BasicConfig.Config(rep, stringAppender); ILog log1 = LogManager.Get(rep.Name, "TestGlobalProperiesPattern"); log1.Info("TestMessage"); Assert.AreEqual(TextDefault.NullText, stringAppender.GetString(), "Test no global properties value set"); stringAppender.Reset(); GlobalContext.Set(Utils.PROPERTY_KEY, "val1"); log1.Info("TestMessage"); Assert.AreEqual("val1", stringAppender.GetString(), "Test global properties value set"); stringAppender.Reset(); GlobalContext.Remove(Utils.PROPERTY_KEY); log1.Info("TestMessage"); Assert.AreEqual(TextDefault.NullText, stringAppender.GetString(), "Test global properties value removed"); stringAppender.Reset(); }
public void TestThreadSafety() { ILoggerController rep = LogManager.CreateController(Guid.NewGuid().ToString()); var memoryAppender = new AppenderMemory(); var patternLayout = new LayoutPattern(); memoryAppender.Layout = patternLayout; memoryAppender.Activate(); BasicConfig.Config(rep, memoryAppender); cThreadsRunning = cThreadsMax; var threads = Enumerable.Range(0, cThreadsMax) .Select(i => new Thread(LogMessages(rep.Name))) .ToList(); foreach (var thread in threads) { thread.Start(); } long cEventsRead = 0; while (cThreadsRunning > 0) { var events = memoryAppender.PopAllInputs(); cEventsRead += events.Length; } foreach (var thread in threads) { thread.Join(); } cEventsRead += memoryAppender.PopAllInputs().Length; Assert.AreEqual(cEventsExpected, cEventsRead, "Log events were lost."); }
public void TestLogFormatApi_NoException() { StringAppender stringAppender = new StringAppender(); stringAppender.Threshold = Level.Off; stringAppender.Layout = new LayoutPattern("%level:%message"); ILoggerController rep = LogManager.CreateController(Guid.NewGuid().ToString()); BasicConfig.Config(rep, stringAppender); ILog log1 = LogManager.Get(rep.Name, "TestLogFormatApi_Exception"); // *** log1.Exception("TestMessage"); Assert.AreEqual("", stringAppender.GetString(), "Test simple EXCEPTION event 1"); stringAppender.Reset(); // *** log1.Exception("TestMessage", null); Assert.AreEqual("", stringAppender.GetString(), "Test simple EXCEPTION event 2"); stringAppender.Reset(); // *** log1.Exception("TestMessage", new Exception("Exception message")); Assert.AreEqual("", stringAppender.GetString(), "Test simple EXCEPTION event 3"); stringAppender.Reset(); // *** log1.ExceptionFormat("a{0}", "1"); Assert.AreEqual("", stringAppender.GetString(), "Test formatted EXCEPTION event with 1 parm"); stringAppender.Reset(); // *** log1.ExceptionFormat("a{0}b{1}", "1", "2"); Assert.AreEqual("", stringAppender.GetString(), "Test formatted EXCEPTION event with 2 parm"); stringAppender.Reset(); // *** log1.ExceptionFormat("a{0}b{1}c{2}", "1", "2", "3"); Assert.AreEqual("", stringAppender.GetString(), "Test formatted EXCEPTION event with 3 parm"); stringAppender.Reset(); // *** log1.ExceptionFormat("a{0}b{1}c{2}d{3}e{4}f", "Q", "W", "E", "R", "T", "Y"); Assert.AreEqual("", stringAppender.GetString(), "Test formatted EXCEPTION event with 5 parms (only 4 used)"); stringAppender.Reset(); // *** log1.ExceptionFormat(null, "Before {0} After {1}", "Middle", "End"); Assert.AreEqual("", stringAppender.GetString(), "Test formatting with null provider"); stringAppender.Reset(); // *** log1.ExceptionFormat(new CultureInfo("en"), "Before {0} After {1}", "Middle", "End"); Assert.AreEqual("", stringAppender.GetString(), "Test formatting with 'en' provider"); stringAppender.Reset(); }
/// <summary> /// Destroys the logger hierarchy created by <see cref="SmtpPickupDirAppenderTest.CreateLogger"/> /// </summary> private static void DestroyLogger() { ILoggerController h = LogManager.GetController("TestRepository"); h.Reset(); //Replace the repository selector so that we can recreate the hierarchy with the same name if necessary LoggerController.Selector = new LoggerControllerSelector(typeof(LoggerController)); }
public void TestLogFormatApi_Debug() { StringAppender stringAppender = new StringAppender(); stringAppender.Layout = new LayoutPattern("%level:%message"); ILoggerController rep = LogManager.CreateController(Guid.NewGuid().ToString()); BasicConfig.Config(rep, stringAppender); ILog log1 = LogManager.Get(rep.Name, "TestLogFormatApi_Debug"); // *** log1.Debug("TestMessage"); Assert.AreEqual("DEBUG:TestMessage", stringAppender.GetString(), "Test simple DEBUG event 1"); stringAppender.Reset(); // *** log1.Debug("TestMessage", null); Assert.AreEqual("DEBUG:TestMessage", stringAppender.GetString(), "Test simple DEBUG event 2"); stringAppender.Reset(); // *** log1.Debug("TestMessage", new Exception("Exception message")); Assert.AreEqual("DEBUG:TestMessage\r\nException: Message: Exception message" + Environment.NewLine + "System.Exception: Exception message" + Environment.NewLine, stringAppender.GetString(), "Test simple DEBUG event 3"); stringAppender.Reset(); // *** log1.DebugFormat("a{0}", "1"); Assert.AreEqual("DEBUG:a1", stringAppender.GetString(), "Test formatted DEBUG event with 1 parm"); stringAppender.Reset(); // *** log1.DebugFormat("a{0}b{1}", "1", "2"); Assert.AreEqual("DEBUG:a1b2", stringAppender.GetString(), "Test formatted DEBUG event with 2 parm"); stringAppender.Reset(); // *** log1.DebugFormat("a{0}b{1}c{2}", "1", "2", "3"); Assert.AreEqual("DEBUG:a1b2c3", stringAppender.GetString(), "Test formatted DEBUG event with 3 parm"); stringAppender.Reset(); // *** log1.DebugFormat("a{0}b{1}c{2}d{3}e{4}f", "Q", "W", "E", "R", "T", "Y"); Assert.AreEqual("DEBUG:aQbWcEdReTf", stringAppender.GetString(), "Test formatted DEBUG event with 5 parms (only 4 used)"); stringAppender.Reset(); // *** log1.DebugFormat(null, "Before {0} After {1}", "Middle", "End"); Assert.AreEqual("DEBUG:Before Middle After End", stringAppender.GetString(), "Test formatting with null provider"); stringAppender.Reset(); // *** log1.DebugFormat(new CultureInfo("en"), "Before {0} After {1}", "Middle", "End"); Assert.AreEqual("DEBUG:Before Middle After End", stringAppender.GetString(), "Test formatting with 'en' provider"); stringAppender.Reset(); }
public void TestFormatString() { StringAppender stringAppender = new StringAppender(); stringAppender.Layout = new LayoutPattern("%message"); ILoggerController rep = LogManager.CreateController(Guid.NewGuid().ToString()); BasicConfig.Config(rep, stringAppender); ILog log1 = LogManager.Get(rep.Name, "TestFormatString"); // *** log1.Info("TestMessage"); Assert.AreEqual("TestMessage", stringAppender.GetString(), "Test simple INFO event"); stringAppender.Reset(); // *** log1.DebugFormat("Before {0} After", "Middle"); Assert.AreEqual("Before Middle After", stringAppender.GetString(), "Test simple formatted DEBUG event"); stringAppender.Reset(); // *** log1.InfoFormat("Before {0} After", "Middle"); Assert.AreEqual("Before Middle After", stringAppender.GetString(), "Test simple formatted INFO event"); stringAppender.Reset(); // *** log1.WarnFormat("Before {0} After", "Middle"); Assert.AreEqual("Before Middle After", stringAppender.GetString(), "Test simple formatted WARN event"); stringAppender.Reset(); // *** log1.ErrorFormat("Before {0} After", "Middle"); Assert.AreEqual("Before Middle After", stringAppender.GetString(), "Test simple formatted ERROR event"); stringAppender.Reset(); // *** log1.ExceptionFormat("Before {0} After", "Middle"); Assert.AreEqual("Before Middle After", stringAppender.GetString(), "Test simple formatted FATAL event"); stringAppender.Reset(); // *** log1.InfoFormat("Before {0} After {1}", "Middle", "End"); Assert.AreEqual("Before Middle After End", stringAppender.GetString(), "Test simple formatted INFO event 2"); stringAppender.Reset(); // *** log1.InfoFormat("IGNORE THIS WARNING - EXCEPTION EXPECTED Before {0} After {1} {2}", "Middle", "End"); Assert.AreEqual(STRING_FORMAT_ERROR, stringAppender.GetString(), "Test formatting error"); stringAppender.Reset(); }
private static void ExecuteBackgroundThread() { ILog log = LogManager.Get(TestBackgroundThreadContextPropertyRepository, "ExecuteBackGroundThread"); ThreadContext.PropertySet["DateTimeTodayToString"] = DateTime.Today.ToString(); log.Info("TestMessage"); ILoggerController hierarchyLoggingRepository = log.Logger.Controller; StringAppender stringAppender = (StringAppender)hierarchyLoggingRepository.Root.AppenderSet[0]; Assert.AreEqual(DateTime.Today.ToString(), stringAppender.GetString()); }
private void SetupController() { controller_ = new LoggerController(); eventRaisingAppender_ = new EventRaisingAppender(); eventRaisingAppender_.LoggingEventAppended += eventRaisingAppender_LoggingEventAppended; controller_.Root.Level = Level.All; controller_.Root.AddAppender(eventRaisingAppender_); BasicConfig.Config(controller_, eventRaisingAppender_); logger_ = controller_.Get("test"); }
public void TestDisable1() { CountingAppender caRoot = new CountingAppender(); ILogger root = Utils.GetController().Root; root.AddAppender(caRoot); ILoggerController h = Utils.GetController(); h.Threshold = Level.Info; h.Initialize(); Assert.AreEqual(caRoot.Counter, 0); root.Log(Level.Debug, MSG, null); Assert.AreEqual(caRoot.Counter, 0); root.Log(Level.Info, MSG, null); Assert.AreEqual(caRoot.Counter, 1); root.Log(Level.Warn, MSG, null); Assert.AreEqual(caRoot.Counter, 2); root.Log(Level.Warn, MSG, null); Assert.AreEqual(caRoot.Counter, 3); h.Threshold = Level.Warn; root.Log(Level.Debug, MSG, null); Assert.AreEqual(caRoot.Counter, 3); root.Log(Level.Info, MSG, null); Assert.AreEqual(caRoot.Counter, 3); root.Log(Level.Warn, MSG, null); Assert.AreEqual(caRoot.Counter, 4); root.Log(Level.Error, MSG, null); Assert.AreEqual(caRoot.Counter, 5); root.Log(Level.Assert, MSG, null); Assert.AreEqual(caRoot.Counter, 6); root.Log(Level.Exception, MSG, null); Assert.AreEqual(caRoot.Counter, 7); h.Threshold = Level.Off; root.Log(Level.Debug, MSG, null); Assert.AreEqual(caRoot.Counter, 7); root.Log(Level.Info, MSG, null); Assert.AreEqual(caRoot.Counter, 7); root.Log(Level.Warn, MSG, null); Assert.AreEqual(caRoot.Counter, 7); root.Log(Level.Error, MSG, null); Assert.AreEqual(caRoot.Counter, 7); root.Log(Level.Assert, MSG, null); Assert.AreEqual(caRoot.Counter, 7); root.Log(Level.Exception, MSG, null); Assert.AreEqual(caRoot.Counter, 7); }
public void PatternConverterProperties() { XmlDocument log4netConfig = new XmlDocument(); log4netConfig.LoadXml(@" <Soyo.Base.Log> <appender name=""PatternStringAppender"" type=""UnitTest.Base.Log.PatternStringAppender""> <layout type=""Soyo.Base.Text.LayoutLoggerSimple"" /> <setting> <converter> <name value=""propertyKeyCount"" /> <type value=""UnitTest.Base.Log.PropertyKeyCountPatternConverter"" /> <property> <key value=""one-plus-one"" /> <value value=""2"" /> </property> <property> <key value=""two-plus-two"" /> <value value=""4"" /> </property> </converter> <pattern value=""%propertyKeyCount"" /> </setting> </appender> <root> <level value=""ALL"" /> <appender-ref ref=""PatternStringAppender"" /> </root> </Soyo.Base.Log>"); ILoggerController rep = LogManager.CreateController(Guid.NewGuid().ToString()); XmlConfig.Config(rep, log4netConfig["Soyo.Base.Log"]); ILog log = LogManager.Get(rep.Name, "PatternConverterProperties"); log.Debug("Message"); PropertyKeyCountPatternConverter converter = PropertyKeyCountPatternConverter.MostRecentInstance; Assert.AreEqual(2, converter.PropertySet.Count); Assert.AreEqual("4", converter.PropertySet["two-plus-two"]); PatternStringAppender appender = (PatternStringAppender)LogManager.GetController(rep.Name).AppenderSet[0]; Assert.AreEqual("2", appender.Setting.Format()); }
public void TestBackgroundThreadContextProperty() { StringAppender stringAppender = new StringAppender(); stringAppender.Layout = new LayoutPattern("%property{DateTimeTodayToString}"); ILoggerController rep = LogManager.CreateController(TestBackgroundThreadContextPropertyRepository = "TestBackgroundThreadContextPropertyRepository" + Guid.NewGuid().ToString()); BasicConfig.Config(rep, stringAppender); System.Threading.Thread thread = new System.Threading.Thread(new ThreadStart(ExecuteBackgroundThread)); thread.Start(); System.Threading.Thread.CurrentThread.Join(2000); }
public void TestHierarchy1() { ILoggerController h = LogManager.CreateController(""); h.Root.Level = Level.Error; ILogger a0 = h.Get("a"); Assert.AreEqual("a", a0.Name); Assert.IsNull(a0.Level); Assert.AreSame(Level.Error, a0.ActiveLevel); ILogger a1 = h.Get("a"); Assert.AreSame(a0, a1); }
public void TestStackTracePattern() { StringAppender stringAppender = new StringAppender(); stringAppender.Layout = NewPatternLayout("%stacktrace{2}"); ILoggerController rep = LogManager.CreateController(Guid.NewGuid().ToString()); BasicConfig.Config(rep, stringAppender); ILog log1 = LogManager.Get(rep.Name, "TestStackTracePattern"); log1.Info("TestMessage"); StringAssert.EndsWith("PatternLayoutTest.TestStackTracePattern", stringAppender.GetString(), "stack trace value set"); stringAppender.Reset(); }
public void FilterConfigurationTest() { XmlDocument log4netConfig = new XmlDocument(); #region Load log4netConfig log4netConfig.LoadXml(@" <Soyo.Base.Log> <appender name=""AppenderMemory"" type=""Soyo.Base.Text.AppenderMemory""> <filter type=""UnitTest.Base.Log.MultiplePropertyFilter""> <condition> <key value=""ABC"" /> <stringToMatch value=""123"" /> </condition> <condition> <key value=""DEF"" /> <stringToMatch value=""456"" /> </condition> </filter> </appender> <root> <level value=""ALL"" /> <appender-ref ref=""AppenderMemory"" /> </root> </Soyo.Base.Log>"); #endregion ILoggerController rep = LogManager.CreateController(Guid.NewGuid().ToString()); XmlConfig.Config(rep, log4netConfig["Soyo.Base.Log"]); IAppender[] appenders = LogManager.GetController(rep.Name).AppenderSet; Assert.IsTrue(appenders.Length == 1); IAppender appender = Array.Find(appenders, delegate(IAppender a) { return(a.Name == "AppenderMemory"); }); Assert.IsNotNull(appender); MultiplePropertyFilter multiplePropertyFilter = ((AppenderBase)appender).FilterHead as MultiplePropertyFilter; MultiplePropertyFilter.Condition[] conditions = multiplePropertyFilter.GetConditions(); Assert.AreEqual(2, conditions.Length); Assert.AreEqual("ABC", conditions[0].Key); Assert.AreEqual("123", conditions[0].StringToMatch); Assert.AreEqual("DEF", conditions[1].Key); Assert.AreEqual("456", conditions[1].StringToMatch); }
public void NamedPatternConverterWithPrecision2ShouldStripLessLeadingStuffIfPresent() { StringAppender stringAppender = new StringAppender(); LayoutPattern layout = NewPatternLayout(); layout.AddConverter("message-as-name", typeof(MessageAsNamePatternConverter)); layout.Pattern = "%message-as-name{2}"; layout.Activate(); stringAppender.Layout = layout; ILoggerController rep = LogManager.CreateController(Guid.NewGuid().ToString()); BasicConfig.Config(rep, stringAppender); ILog log1 = LogManager.Get(rep.Name, "TestAddingCustomPattern"); log1.Info("NoDots"); Assert.AreEqual("NoDots", stringAppender.GetString(), "%message-as-name not registered"); stringAppender.Reset(); log1.Info("One.Dot"); Assert.AreEqual("One.Dot", stringAppender.GetString(), "%message-as-name not registered"); stringAppender.Reset(); log1.Info("Tw.o.Dots"); Assert.AreEqual("o.Dots", stringAppender.GetString(), "%message-as-name not registered"); stringAppender.Reset(); log1.Info("TrailingDot."); Assert.AreEqual("TrailingDot.", stringAppender.GetString(), "%message-as-name not registered"); stringAppender.Reset(); log1.Info(".LeadingDot"); Assert.AreEqual("LeadingDot", stringAppender.GetString(), "%message-as-name not registered"); stringAppender.Reset(); // empty string and other evil combinations as tests for of-by-one mistakes in index calculations log1.Info(string.Empty); Assert.AreEqual(string.Empty, stringAppender.GetString(), "%message-as-name not registered"); stringAppender.Reset(); log1.Info("x"); Assert.AreEqual("x", stringAppender.GetString(), "%message-as-name not registered"); stringAppender.Reset(); log1.Info("."); Assert.AreEqual(".", stringAppender.GetString(), "%message-as-name not registered"); stringAppender.Reset(); }
public void SetupRepository() { controller_ = LogManager.CreateController(""); countingAppender_ = new CountingAppender(); countingAppender_.Activate(); bufferingForwardingAppender_ = new AppenderLoggerBufferForward(); bufferingForwardingAppender_.AddAppender(countingAppender_); bufferingForwardingAppender_.Size = 5; bufferingForwardingAppender_.ClearFilter(); //m_bufferingForwardingAppender.Fix = FixFlags.Partial; bufferingForwardingAppender_.Lossy = false; bufferingForwardingAppender_.TriggerLossy = null; bufferingForwardingAppender_.Threshold = Level.All; }
/// <summary> /// Creates a logger hierarchy, configures a SMTP pickup dir appender and returns an ILogger /// </summary> /// <param name="appender">The appender to use</param> /// <returns>A configured ILogger</returns> private ILogger CreateLogger(AppenderSmtpPickup appender) { ILoggerController h = LogManager.CreateController("TestRepository"); LayoutPattern layout = new LayoutPattern(); layout.Pattern = "%m%n"; layout.Activate(); appender.Layout = layout; appender.Activate(); h.Root.AddAppender(appender); h.Initialize(); ILogger log = h.Get("Logger"); return(log); }
public void AddingMultipleAppenders() { CountingAppender alpha = new CountingAppender(); CountingAppender beta = new CountingAppender(); ILoggerController hierarchy = Utils.GetController(); hierarchy.Root.AddAppender(alpha); hierarchy.Root.AddAppender(beta); hierarchy.Initialize(); ILog log = LogManager.Get(GetType()); log.Debug("Hello World"); Assert.AreEqual(1, alpha.Counter); Assert.AreEqual(1, beta.Counter); }
public void TestExceptionPattern() { StringAppender stringAppender = new StringAppender(); LayoutPattern layout = NewPatternLayout("%exception{stacktrace}"); stringAppender.Layout = layout; ILoggerController rep = LogManager.CreateController(Guid.NewGuid().ToString()); BasicConfig.Config(rep, stringAppender); ILog log1 = LogManager.Get(rep.Name, "TestExceptionPattern"); Exception exception = new Exception("Oh no!"); log1.Info("TestMessage", exception); Assert.AreEqual(TextDefault.NullText, stringAppender.GetString()); stringAppender.Reset(); }
public void TestAddingCustomPattern() { StringAppender stringAppender = new StringAppender(); LayoutPattern layout = NewPatternLayout(); layout.AddConverter("TestAddingCustomPattern", typeof(TestMessagePatternConverter)); layout.Pattern = "%TestAddingCustomPattern"; layout.Activate(); stringAppender.Layout = layout; ILoggerController rep = LogManager.CreateController(Guid.NewGuid().ToString()); BasicConfig.Config(rep, stringAppender); ILog log1 = LogManager.Get(rep.Name, "TestAddingCustomPattern"); log1.Info("TestMessage"); Assert.AreEqual("TestMessage", stringAppender.GetString(), "%TestAddingCustomPattern not registered"); stringAppender.Reset(); }
public void TestPropertyCharacterEscaping() { LogObjectData evt = CreateBaseEvent(); evt.PropertySet["Property1"] = "prop1 \"quoted\""; LayoutLoggerXml layout = new LayoutLoggerXml(); StringAppender stringAppender = new StringAppender(); stringAppender.Layout = layout; ILoggerController rep = LogManager.CreateController(Guid.NewGuid().ToString()); BasicConfig.Config(rep, stringAppender); ILog log1 = LogManager.Get(rep.Name, "TestThreadProperiesPattern"); log1.Logger.Log(new LogObject(evt)); string expected = CreateEventNode("Property1", "prop1 "quoted""); Assert.AreEqual(expected, stringAppender.GetString()); }
public void TestPropertyIllegalCharacterMaskingInName() { LogObjectData evt = CreateBaseEvent(); evt.PropertySet["Property\uFFFF"] = "mask this ->\uFFFF"; LayoutLoggerXml layout = new LayoutLoggerXml(); StringAppender stringAppender = new StringAppender(); stringAppender.Layout = layout; ILoggerController rep = LogManager.CreateController(Guid.NewGuid().ToString()); BasicConfig.Config(rep, stringAppender); ILog log1 = LogManager.Get(rep.Name, "TestThreadProperiesPattern"); log1.Logger.Log(new LogObject(evt)); string expected = CreateEventNode("Property?", "mask this ->?"); Assert.AreEqual(expected, stringAppender.GetString()); }
private void SetupController() { controller_ = new LoggerController(); countingAppender_ = new CountingAppender(); countingAppender_.Activate(); bufferingForwardingAppender_ = new AppenderLoggerBufferForward(); bufferingForwardingAppender_.AddAppender(countingAppender_); bufferingForwardingAppender_.Size = 0; bufferingForwardingAppender_.ClearFilter(); bufferingForwardingAppender_.Trigger = null; //m_bufferingForwardingAppender.Fix = FixFlags.Partial; bufferingForwardingAppender_.Lossy = false; bufferingForwardingAppender_.TriggerLossy = null; bufferingForwardingAppender_.Threshold = Level.All; bufferingForwardingAppender_.Activate(); BasicConfig.Config(controller_, bufferingForwardingAppender_); }
// LOG4NET-343 public void LoggerNameCanConsistOfASingleDot() { XmlDocument log4netConfig = new XmlDocument(); log4netConfig.LoadXml(@" <Soyo.Base.Log> <appender name=""StringAppender"" type=""UnitTest.Base.Log.StringAppender""> <layout type=""Soyo.Base.Text.LayoutLoggerSimple"" /> </appender> <root> <level value=""ALL"" /> <appender-ref ref=""StringAppender"" /> </root> <logger name="".""> <level value=""WARN"" /> </logger> </Soyo.Base.Log>"); ILoggerController rep = LogManager.CreateController(Guid.NewGuid().ToString()); XmlConfig.Config(rep, log4netConfig["Soyo.Base.Log"]); }