bool IPresenter.GenerateGrammar(XmlElement root) { try { Log4NetPatternImporter.GenerateRegularGrammarElement(root, view.PatternTextBoxValue); } catch (Log4NetImportException e) { alerts.ShowPopup("Error", "Failed to import the pattern:\n" + e.Message, AlertFlags.Ok | AlertFlags.WarningIcon); return(false); } return(true); }
void TestLayout(string layout, Action <Logger, ExpectedLog> loggingCallback) { var logManagerType = log4NetAsm.GetType("log4net.LogManager"); dynamic hierarchy = logManagerType.InvokeMember("GetRepository", BindingFlags.Static | BindingFlags.InvokeMethod | BindingFlags.Public, null, null, null); dynamic patternLayout = log4NetAsm.CreateInstance("log4net.Layout.PatternLayout"); patternLayout.ConversionPattern = "%date [%thread] %-5level %logger - %message%newline"; patternLayout.ActivateOptions(); TextWriter logWriter = new StringWriter(); dynamic memory = log4NetAsm.CreateInstance("log4net.Appender.TextWriterAppender"); memory.Layout = patternLayout; memory.Writer = logWriter; memory.ActivateOptions(); hierarchy.Root.AddAppender(memory); //hierarchy.Root.Level = Level.Info; hierarchy.Configured = true; var logger = logManagerType.InvokeMember("GetLogger", BindingFlags.Static | BindingFlags.InvokeMethod | BindingFlags.Public, null, null, new [] { GetType() }); var expectedLog = new ExpectedLog(); loggingCallback(new Logger() { impl = logger }, expectedLog); var logContent = logWriter.ToString(); var formatDocument = CreateTestFormatSkeleton(); Log4NetPatternImporter.GenerateRegularGrammarElement(formatDocument.DocumentElement, layout); ParseAndVerifyLog(expectedLog, logContent, formatDocument); }