forked from scriptcs/scriptcs
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathLoggerConfigurator.cs
More file actions
73 lines (63 loc) · 2.14 KB
/
LoggerConfigurator.cs
File metadata and controls
73 lines (63 loc) · 2.14 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
using System;
using System.Globalization;
using log4net;
using log4net.Appender;
using log4net.Core;
using log4net.Layout;
using log4net.Repository.Hierarchy;
using Common.Logging.Log4Net;
using ICommonLog = Common.Logging.ILog;
namespace ScriptCs
{
public class LoggerConfigurator
{
private const string ThreadPattern = " Thread[%thread]";
private const string Pattern = "%-5level{threadLevel}: %message%newline";
private const string LoggerName = "scriptcs";
private readonly LogLevel _logLevel;
private ICommonLog _logger;
public LoggerConfigurator(LogLevel logLevel)
{
_logLevel = logLevel;
}
public void Configure()
{
var hierarchy = (Hierarchy)LogManager.GetRepository();
var logger = LogManager.GetLogger(LoggerName);
var consoleAppender = new ConsoleAppender
{
Layout = new PatternLayout(GetLogPattern(_logLevel)),
Threshold = hierarchy.LevelMap[_logLevel.ToString().ToUpper(CultureInfo.CurrentCulture)]
};
hierarchy.Root.AddAppender(consoleAppender);
hierarchy.Root.Level = Level.All;
hierarchy.Configured = true;
_logger = new CodeConfigurableLog4NetLogger(logger);
}
public ICommonLog GetLogger()
{
return _logger;
}
private static string GetLogPattern(LogLevel logLevel)
{
switch (logLevel)
{
case LogLevel.Error:
case LogLevel.Info:
return Pattern.Replace("{threadLevel}", string.Empty);
case LogLevel.Debug:
case LogLevel.Trace:
return Pattern.Replace("{threadLevel}", ThreadPattern);
default:
throw new ArgumentOutOfRangeException("logLevel");
}
}
private class CodeConfigurableLog4NetLogger : Log4NetLogger
{
protected internal CodeConfigurableLog4NetLogger(ILoggerWrapper log)
: base(log)
{
}
}
}
}