public static void Configure(dynamic appenderForNServiceBusToLogTo, string thresholdForNServiceBusToLogWith = null) { if (appenderForNServiceBusToLogTo == null) { throw new ArgumentNullException("appenderForNServiceBusToLogTo"); } EnsureLog4NetExists(); if (!AppenderSkeletonType.IsInstanceOfType(appenderForNServiceBusToLogTo)) { throw new ArgumentException("The object provided must inherit from log4net.Appender.AppenderSkeleton."); } Configure(); if (appenderForNServiceBusToLogTo.Layout == null) { appenderForNServiceBusToLogTo.Layout = (dynamic)Activator.CreateInstance(PatternLayoutType, "%d [%t] %-5p %c [%x] <%X{auth}> - %m%n"); } if (thresholdForNServiceBusToLogWith != null) { appenderForNServiceBusToLogTo.Threshold = Log4NetAppenderFactory.ConvertToLogLevel(thresholdForNServiceBusToLogWith); } if (appenderForNServiceBusToLogTo.Threshold == null) { appenderForNServiceBusToLogTo.Threshold = Log4NetAppenderFactory.ConvertToLogLevel("Info"); } appenderForNServiceBusToLogTo.ActivateOptions(); BasicConfiguratorType.InvokeStaticMethod("Configure", (object)appenderForNServiceBusToLogTo); }
public static void Configure(dynamic appenderForNServiceBusToLogTo, string thresholdForNServiceBusToLogWith = null) { if (appenderForNServiceBusToLogTo == null) { throw new ArgumentNullException("appenderForNServiceBusToLogTo"); } EnsureLog4NetExists(); if (!AppenderSkeletonType.IsInstanceOfType(appenderForNServiceBusToLogTo)) throw new ArgumentException("The object provided must inherit from log4net.Appender.AppenderSkeleton."); Configure(); if (appenderForNServiceBusToLogTo.Layout == null) { // ReSharper disable once RedundantCast appenderForNServiceBusToLogTo.Layout = (dynamic)Activator.CreateInstance(PatternLayoutType, "%d [%t] %-5p %c [%x] <%X{auth}> - %m%n"); } if (thresholdForNServiceBusToLogWith != null) appenderForNServiceBusToLogTo.Threshold = Log4NetAppenderFactory.ConvertToLogLevel(thresholdForNServiceBusToLogWith); if (appenderForNServiceBusToLogTo.Threshold == null) appenderForNServiceBusToLogTo.Threshold = Log4NetAppenderFactory.ConvertToLogLevel("Info"); appenderForNServiceBusToLogTo.ActivateOptions(); BasicConfiguratorType.InvokeStaticMethod("Configure", (object)appenderForNServiceBusToLogTo); }
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); }