예제 #1
0
        /// <summary>
        /// Creates Buffer Appender, Responsible for storing all logging events in memory buffer
        /// and writing them down when by passing the logging events on to the file appender it holds
        /// when its buffer becomes full
        /// Can also be made a lossy logger which writes only writes down to a file when a specific crieteria/condition is met
        /// </summary>
        /// <param name="cacheName">CacheName used to name the Buffer Appender</param>
        /// <param name="fileName">File name to log into</param>
        /// <returns>Returns the created Appender</returns>
        private log4net.Appender.IAppender CreateBufferAppender(string fileName)
        {
            log4net.Appender.BufferingForwardingAppender appender = new BufferingForwardingAppender();
            appender.Name = "BufferingForwardingAppender" + _loggerName;
            //Pick from config
            int bufferSize = bufferDefaultSize;

            ReadConfig(out bufferSize);
            if (bufferSize == bufferDefaultSize)
            {
                ReadClientConfig(out bufferSize);
            }

            if (bufferSize < 1)
            {
                bufferSize = bufferDefaultSize;
            }

            appender.BufferSize = bufferSize;

            //Threshold is maintained by the logger rather than the appenders
            appender.Threshold = log4net.Core.Level.All;

            //Adds the appender to which it will pass on all the logging levels upon filling up the buffer
            appender.AddAppender(CreateRollingFileAppender(fileName));

            //necessary to apply the appender property changes
            appender.ActivateOptions();

            return(appender);
        }
예제 #2
0
        public void SetUp()
        {
            XmlDocument xmlDoc      = new XmlDocument();
            XmlElement  log4NetNode = xmlDoc.CreateElement(Log4NetXmlConstants.Log4Net);

            IElementConfiguration configuration = Substitute.For <IElementConfiguration>();

            configuration.ConfigXml.Returns(xmlDoc);
            configuration.Log4NetNode.Returns(log4NetNode);

            mSut = new BufferingForwardingAppender(configuration);
            mSut.Initialize();
        }
        public void SetupRepository()
        {
            m_hierarchy = new Repository.Hierarchy.Hierarchy();

            m_countingAppender = new CountingAppender();
            m_countingAppender.ActivateOptions();

            m_bufferingForwardingAppender = new BufferingForwardingAppender();
            m_bufferingForwardingAppender.AddAppender(m_countingAppender);

            m_bufferingForwardingAppender.BufferSize = 5;
            m_bufferingForwardingAppender.ClearFilters();
            m_bufferingForwardingAppender.Fix            = FixFlags.Partial;
            m_bufferingForwardingAppender.Lossy          = false;
            m_bufferingForwardingAppender.LossyEvaluator = null;
            m_bufferingForwardingAppender.Threshold      = Level.All;
        }
        private void SetupRepository()
        {
            m_hierarchy = new Repository.Hierarchy.Hierarchy();

            m_countingAppender = new CountingAppender();
            m_countingAppender.ActivateOptions();

            m_bufferingForwardingAppender = new BufferingForwardingAppender();
            m_bufferingForwardingAppender.AddAppender(m_countingAppender);

            m_bufferingForwardingAppender.BufferSize = 0;
            m_bufferingForwardingAppender.ClearFilters();
            m_bufferingForwardingAppender.Evaluator      = null;
            m_bufferingForwardingAppender.Fix            = FixFlags.Partial;
            m_bufferingForwardingAppender.Lossy          = false;
            m_bufferingForwardingAppender.LossyEvaluator = null;
            m_bufferingForwardingAppender.Threshold      = Level.All;

            m_bufferingForwardingAppender.ActivateOptions();

            log4net.Config.BasicConfigurator.Configure(m_hierarchy, m_bufferingForwardingAppender);
        }
예제 #5
0
        public static void Setup(string path)
        {
            // "%d[%2%t] %-5p[%-10c] %m %n"
            var pl = new PatternLayout {
                ConversionPattern = "%c%m%n"
            };

            pl.ActivateOptions();

            var fileAppender = new FileAppender
            {
                AppendToFile = true,
                LockingModel = new FileAppender.MinimalLock(),
                File         = path,
                Layout       = pl
            };

            fileAppender.ActivateOptions();

            var bufferingForwardingAppender = new BufferingForwardingAppender
            {
                Lossy = false,
                Fix   = FixFlags.None
            };

            bufferingForwardingAppender.AddAppender(fileAppender);
            bufferingForwardingAppender.ActivateOptions();

            var consoleAppender = new ConsoleAppender {
                Layout = pl
            };

            consoleAppender.ActivateOptions();

            var hierarchy = (Hierarchy)LogManager.GetRepository();

            hierarchy.Root.RemoveAllAppenders();
            BasicConfigurator.Configure(hierarchy, bufferingForwardingAppender, consoleAppender);
        }
예제 #6
0
        private static IAppender CreateFileAppender(FileInfo loggerFilePath)
        {
            var rollingFileAppender = new RollingFileAppender
            {
                Name = "RollFileAppender",
                File = loggerFilePath.FullName,
                StaticLogFileName  = true,
                AppendToFile       = false,
                LockingModel       = new FileAppender.ExclusiveLock(),
                RollingStyle       = RollingFileAppender.RollingMode.Size,
                MaxSizeRollBackups = 10,
                MaximumFileSize    = "10MB",
            };

            var layout = new PatternLayout
            {
                ConversionPattern = "%date{yyyy-MM-dd} %date{hh:mm:ss.ff}  [%level]  %message%newline"
            };

            rollingFileAppender.Layout = layout;
            rollingFileAppender.ActivateOptions();
            layout.ActivateOptions();

            var bufappender = new BufferingForwardingAppender
            {
                Name       = "BuffAppender",
                BufferSize = 512,
                Fix        = 0,
                Lossy      = false,
                Evaluator  = new LevelEvaluator(Level.Error)
            };

            bufappender.ActivateOptions();
            bufappender.AddAppender(rollingFileAppender);

            return(bufappender);
        }
예제 #7
0
        public static void AddConsoleLogger(bool colored = true)
        {
            var       repositories = log4net.LogManager.GetAllRepositories();
            IAppender appender;

            if (colored)
            {
                var consoleAppender = new ColoredConsoleAppender();
                //consoleAppender.Target = "Console.Out";
                consoleAppender.AddMapping(new ColoredConsoleAppender.LevelColors
                {
                    Level     = Level.Debug,
                    ForeColor = ColoredConsoleAppender.Colors.Cyan
                });
                consoleAppender.AddMapping(new ColoredConsoleAppender.LevelColors
                {
                    Level     = Level.Info,
                    ForeColor = ColoredConsoleAppender.Colors.Purple | ColoredConsoleAppender.Colors.HighIntensity
                });
                consoleAppender.AddMapping(new ColoredConsoleAppender.LevelColors
                {
                    Level     = Level.Warn,
                    ForeColor = ColoredConsoleAppender.Colors.Yellow | ColoredConsoleAppender.Colors.HighIntensity
                });
                consoleAppender.AddMapping(new ColoredConsoleAppender.LevelColors
                {
                    Level     = Level.Error,
                    ForeColor = ColoredConsoleAppender.Colors.Red | ColoredConsoleAppender.Colors.HighIntensity
                });
                consoleAppender.AddMapping(new ColoredConsoleAppender.LevelColors
                {
                    Level     = Level.Fatal,
                    ForeColor = ColoredConsoleAppender.Colors.Red | ColoredConsoleAppender.Colors.HighIntensity,
                    BackColor = ColoredConsoleAppender.Colors.White | ColoredConsoleAppender.Colors.HighIntensity
                });
                var patternLayout = new PatternLayout("[%d{HH:mm:ss}][%thread] %logger - %message%newline")
                {
                    IgnoresException = false
                };
                consoleAppender.Layout = patternLayout;

                // add bufferred appender decorator
                appender = consoleAppender;
                consoleAppender.ActivateOptions();
            }
            else
            {
                var consoleAppender = new ConsoleAppender
                {
                    Layout = new PatternLayout("[%d{HH:mm:ss}][%thread] %-5level %logger - %message%newline")
                    {
                        IgnoresException = false
                    }
                };
                appender = consoleAppender;
            }

            var bufferredForwardingAppender = new BufferingForwardingAppender();

            bufferredForwardingAppender.AddAppender(appender);
            bufferredForwardingAppender.BufferSize = 512;
            bufferredForwardingAppender.Fix        = FixFlags.Exception;

            appender = bufferredForwardingAppender;

            BasicConfigurator.Configure(appender);

            foreach (var repo in repositories)
            {
                var hierarchy = repo as log4net.Repository.Hierarchy.Hierarchy;
                if (null != hierarchy)
                {
                    hierarchy.Root.AddAppender(appender);
                }
            }
        }