VRDash/VDash/Logger.cs

93 lines
3.5 KiB
C#

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