using log4net; using log4net.Appender; using log4net.Core; using log4net.Layout; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; namespace VDash { public class Logger { public static void Setup() { var configLoc = ProfileManager.ConfigDirectory + @"\Logs\VRDash.log"; if (!Directory.Exists(Path.GetDirectoryName(configLoc))) { Directory.CreateDirectory(Path.GetDirectoryName(configLoc)); } log4net.Repository.Hierarchy.Hierarchy hierarchy = (log4net.Repository.Hierarchy.Hierarchy)LogManager.GetRepository(); PatternLayout patternLayout = new PatternLayout(); patternLayout.ConversionPattern = "%date [%thread] %level %logger - %message%newline%exception"; patternLayout.ActivateOptions(); hierarchy.Root.RemoveAllAppenders(); #region File Appender RollingFileAppender roller = new RollingFileAppender(); roller.AppendToFile = true; roller.File = configLoc; roller.Layout = patternLayout; roller.MaxSizeRollBackups = 10; roller.MaximumFileSize = "10MB"; roller.RollingStyle = RollingFileAppender.RollingMode.Size; roller.StaticLogFileName = true; roller.ActivateOptions(); hierarchy.Root.AddAppender(roller); #endregion //MemoryAppender memory = new MemoryAppender(); //memory.ActivateOptions(); //hierarchy.Root.AddAppender(memory); ColoredConsoleAppender coloredConsoleAppender = new ColoredConsoleAppender(); coloredConsoleAppender.AddMapping(new ColoredConsoleAppender.LevelColors() { Level = Level.Fatal, ForeColor = ColoredConsoleAppender.Colors.White | ColoredConsoleAppender.Colors.HighIntensity, BackColor = ColoredConsoleAppender.Colors.Red | ColoredConsoleAppender.Colors.HighIntensity }); coloredConsoleAppender.AddMapping(new ColoredConsoleAppender.LevelColors() { Level = Level.Error, ForeColor = ColoredConsoleAppender.Colors.Red | ColoredConsoleAppender.Colors.HighIntensity }); coloredConsoleAppender.AddMapping(new ColoredConsoleAppender.LevelColors() { Level = Level.Warn, ForeColor = ColoredConsoleAppender.Colors.Yellow }); coloredConsoleAppender.AddMapping(new ColoredConsoleAppender.LevelColors() { Level = Level.Info, ForeColor = ColoredConsoleAppender.Colors.Cyan }); coloredConsoleAppender.AddMapping(new ColoredConsoleAppender.LevelColors() { Level = Level.Debug, ForeColor = ColoredConsoleAppender.Colors.White }); coloredConsoleAppender.Layout = patternLayout; coloredConsoleAppender.ActivateOptions(); hierarchy.Root.AddAppender(coloredConsoleAppender); hierarchy.Root.Level = Level.Debug; hierarchy.Configured = true; //BasicConfigurator.Configure(hierarchy); } } public static class LoggerExtensions { public static ILog GetLogger(this object instance) { return LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); } } }