コード例 #1
0
        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);
            }
        }
コード例 #2
0
        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);
        }
    }
コード例 #3
0
        //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);
        }