/// <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); }
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); }
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); }
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); }
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); } } }