Skip to content

Instantly share code, notes, and snippets.

@JustinPealing
Created August 13, 2015 23:34
Show Gist options
  • Save JustinPealing/2d3870dcaf011813bf4e to your computer and use it in GitHub Desktop.
Save JustinPealing/2d3870dcaf011813bf4e to your computer and use it in GitHub Desktop.
Boilerplate Console Application Logging with log4net
using log4net;
using log4net.Appender;
using log4net.Core;
using log4net.Layout;
using log4net.Repository.Hierarchy;
public static class Logging
{
private const string ConversionPattern = "%date{HH:mm:ss,fff} %-5level %-15logger{1} %message%newline";
private static readonly PatternLayout PatternLayout;
static Logging()
{
PatternLayout = new PatternLayout {ConversionPattern = ConversionPattern};
PatternLayout.ActivateOptions();
}
/// <param name="logPath">Path to the log file to use in order to log to a file; Otherwise, null.</param>
public static void Setup(string logPath)
{
var hierarchy = (Hierarchy)LogManager.GetRepository();
hierarchy.Root.AddAppender(CreateConsoleAppender());
if (!string.IsNullOrWhiteSpace(logPath))
{
hierarchy.Root.AddAppender(CreateLogFileAppender(logPath));
}
hierarchy.Root.Level = Level.Debug;
hierarchy.Configured = true;
}
private static ColoredConsoleAppender CreateConsoleAppender()
{
var appender = new ColoredConsoleAppender {Layout = PatternLayout};
appender.AddMapping(new ColoredConsoleAppender.LevelColors
{
Level = Level.Debug,
ForeColor = ColoredConsoleAppender.Colors.Green
});
appender.AddMapping(new ColoredConsoleAppender.LevelColors
{
Level = Level.Info,
ForeColor = ColoredConsoleAppender.Colors.White
});
appender.AddMapping(new ColoredConsoleAppender.LevelColors
{
Level = Level.Warn,
ForeColor = ColoredConsoleAppender.Colors.Yellow
});
appender.AddMapping(new ColoredConsoleAppender.LevelColors
{
Level = Level.Error,
ForeColor = ColoredConsoleAppender.Colors.Red
});
appender.AddMapping(new ColoredConsoleAppender.LevelColors
{
Level = Level.Fatal,
ForeColor = ColoredConsoleAppender.Colors.HighIntensity | ColoredConsoleAppender.Colors.Red
});
appender.ActivateOptions();
return appender;
}
private static IAppender CreateLogFileAppender(string logPath)
{
var appender = new FileAppender {Layout = PatternLayout, File = logPath};
appender.ActivateOptions();
return appender;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment