public void cross_agent_tests(TestCase testCase) { var logAppender = new log4net.Appender.MemoryAppender(); var logFilter = new log4net.Filter.LevelMatchFilter(); logFilter.LevelToMatch = log4net.Core.Level.Warn; logAppender.AddFilter(logFilter); var logger = (log4net.LogManager.GetRepository() as log4net.Repository.Hierarchy.Hierarchy).Root; logger.AddAppender(logAppender); logger.Level = log4net.Core.Level.Warn; logger.Repository.Configured = true; // arrange var configurationService = Mock.Create <IConfigurationService>(); Mock.Arrange(() => configurationService.Configuration.Labels).Returns(testCase.LabelConfigurationString); // act var labelsService = new LabelsService(configurationService); var actualResults = JsonConvert.SerializeObject(labelsService.Labels); var expectedResults = JsonConvert.SerializeObject(testCase.Expected); // assert Assert.AreEqual(expectedResults, actualResults); if (testCase.Warning) { Assert.AreNotEqual(0, logAppender.GetEvents().Length); } else { Assert.AreEqual(0, logAppender.GetEvents().Length); } }
public static string BuildLog4Net(Log4NetConfiguration configuration = null) { log4net.Layout.SerializedLayout layout = new log4net.Layout.SerializedLayout(); layout.AddDecorator(new log4net.Layout.Decorators.StandardTypesDecorator()); layout.AddDefault(""); layout.AddRemove("message"); layout.AddMember("messageobject"); layout.ActivateOptions(); log4net.Filter.LevelMatchFilter filter = new log4net.Filter.LevelMatchFilter { LevelToMatch = log4net.Core.Level.All }; filter.ActivateOptions(); (string InstanceName, bool Buffered, bool KeepFileOpen, bool Shared) = configuration ?? new Log4NetConfiguration(); log4net.Appender.FileAppender.LockingModelBase LockingModel = new log4net.Appender.FileAppender.MinimalLock(); if (KeepFileOpen) { if (Shared) { LockingModel = new log4net.Appender.FileAppender.InterProcessLock(); } else { LockingModel = new log4net.Appender.FileAppender.ExclusiveLock(); } } bool ImmediateFlush = !Buffered; log4net.Appender.RollingFileAppender rollingFileAppender = new log4net.Appender.RollingFileAppender { File = $@"log4net\{InstanceName.ToLower()}-{DateTime.Now.ToString("yyyyMMddHHmm")}-latest.log", ImmediateFlush = ImmediateFlush, LockingModel = LockingModel, AppendToFile = true, RollingStyle = log4net.Appender.RollingFileAppender.RollingMode.Composite, DatePattern = "yyyyMMddhhmm", MaxFileSize = 100_000_000, Name = $"{InstanceName}Appender", Layout = layout }; rollingFileAppender.AddFilter(filter); rollingFileAppender.ActivateOptions(); string Repository = $"{InstanceName}Repository"; log4net.Repository.ILoggerRepository repository = log4net.Core.LoggerManager.CreateRepository(Repository); log4net.Config.BasicConfigurator.Configure(repository, rollingFileAppender); return(Repository); } }
//LOGGER /// <summary> /// Static function that configures the log4net logger object. /// </summary> /// <returns>Interface to the logger.</returns> static log4net.ILog ConfigureLogger() { // Programmatic configuration // follows (with some streamlining) the example from Brendan Long and Ron Grabowski // org.apache.logging.log4net-user // These config statements create a RollingFile Appender. Rolling File Appenders rollover on each execution of the test harness, // in this case, following the Composite RollingMode. Alternative log4net appenders may be added or replace this default appender at the programmer's discretion. // PatternLayout layout = new PatternLayout("%d [%t] %-5p %c - %m%n"); PatternLayout layout = new PatternLayout("%d %-5p %c - %m%n"); log4net.Appender.RollingFileAppender appender = new RollingFileAppender(); appender.Layout = layout; appender.AppendToFile = true; appender.MaxFileSize = 10000000; appender.RollingStyle = RollingFileAppender.RollingMode.Composite; appender.StaticLogFileName = true; appender.File = Properties.Settings.Default.log4netDir; // all logs will be created in the subdirectory logs below where the test harness is executing // Configure filter to accept log messages of any level. log4net.Filter.LevelMatchFilter traceFilter = new log4net.Filter.LevelMatchFilter(); traceFilter.LevelToMatch = log4net.Core.Level.Debug; appender.ClearFilters(); appender.AddFilter(traceFilter); appender.ImmediateFlush = true; appender.ActivateOptions(); // Attach appender into hierarchy log4net.Repository.Hierarchy.Logger root = ((log4net.Repository.Hierarchy.Hierarchy)LogManager.GetRepository()).Root; root.AddAppender(appender); root.Repository.Configured = true; log4net.ILog log = log4net.LogManager.GetLogger("WBM-LOGGER"); return(log); }